stareagle: Kann mir jemand den Unterschied erklären

Beitrag lesen

Hallo,

  1. Warum hat der Coder bei der zweiten elseif die ! vor die Klammer gemacht?

Das "!" ist ein Negationsoperator. isset() gibt, wenn die Variable darin existiert, true zurück. Durch das ! wird jetzt praktisch geprüft, ob die Variable leer ist.

  
if(!isset($beispiel)) {  
  //Hier passiert irgendwas  
}  

würde z.B. ausgeführt wenn die Variable $beispiel *nicht* existiert.

  1. Warum schreibt er immer zuerst isset() um danach zu fragen ob es empty() ist?

isset() überprüft nur, ob die Variable angelegt wurde. Sie kann aber trotzdem leer sein. Das wird mit empty() geprüft.

  
$str = ""; //Hier wird die Variable angelegt. Sie ist jedoch leer  
  
if(isset($str)) {  
  echo "Die Variable str existiert"; //Würde hier ausgeführt.  
}  
  
if(empty($str)) {  
  echo "Ist aber leer..."; //Würde ebenfalls auftauchen, da sie leer ist  
}  

Und eine andere Variante:

  
$str = "foo"; //Jetzt ist $foo nicht mehr leer  
  
if(isset($str)) {  
  echo "Die Variable str existiert"; //Da wird weiterhin ausgeführt.  
}  
  
if(empty($str)) {  
  echo "Ist aber leer...";  
  //Das hier aber nicht leer, da $str nicht mehr ist...  
}  

Um noch mal auf deine erste Frage zurückzukommen:

  
  if(!empty($str)) {  
  echo "Ist nicht leer...";  
  //Wird jetzt ausgeführt, da jetzt geprüft, ob str *nicht* leer ist...  
}  

Gruß

Stareagle