title image


Smiley Re: if "or" Anweisungen
> mit der zusätzlichen Klammer scheint es aber zu gehen.

richtig, es scheint - wenn die Bedingung aber erfüllt sein soll, wenn eine (oder mehrere) der Variablen leer sind, funktioniert es nicht:

$vorname = "foo";

// die restlichen Variablen auf "" setzen:

$nachname = $passwort = $wohnort = $geburtsdatum = "";

if(($vorname=="") or ($nachname=="") or ($passwort=="") or ($wohnort=="") or ($geburtsdatum=="")){

echo 'true (einzeln)';

}

if(($vorname or $nachname or $passwort or $wohnort or $geburtsdatum) == ""){

echo 'true (geklammert)';

}



das gibt nämlich nur "true (einzeln)" aus.

im Ausdruck '($vorname or $nachname or $passwort or $wohnort or $geburtsdatum) == ""' werden zunächst alle Variablen auf true/false geprüft[1], wobei im Beispiel oben $vorname true ergibt, und die anderen false - damit ist dieser Teil true. Anschließend wird dann auf 'true == ""' geprüft, was false ergibt, da (string)true = 1 und 1 != "" ist.



Gruß,

Tobias



[1] wobei nach dem ersten auftreten von true nicht mehr weitergeprüft wird, der Ausdruck kann ja nicht mehr false werden (genauso wie andersrum bei einem Auftreten von false bei einer and-Verknüpfung nicht mehr weitergeprüft wird, da der Ausdruck nicht mehr true werden kann)

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: