Fehler suchen - Registrierung

Das ist ne gute Frage, die du dir aber selbst beantworten kannst, wenn du das Konstrukt noch etwas erweiterst:

PHP:
if( ((int) $a = "string") === false) {
   echo "false";
}
elseif(((int)$a = "string") === true ) {
   echo "true";
}
else {
   echo "weder true noch false";
}

Du prüfst ja nich nur drauf, ob eine Zuweisung 0 oder 1 zuück gibt, sondern auch noch, ob es ein boolsches false (prüfe ob Typ übereinstimmt). Da bei der if ein falscher Wert rauskommt, also die Zuweisung keinen boolschen Wert zurück gibt, ist die Prüfung logischer Weise falsch, es wird also else ausgewertet. ;)
 
saftmeister hat gesagt.:
Das interessante ist, das dort immer ein true zurück geliefert wird, weil eine Zuweisung eines Wertes zu einer Variablen in PHP immer erfolgreich ist.
Das ist nicht ganz richtig. Eine Zuweisung gibt den zugewiesenen Wert zurück:
PHP:
var_dump( $foo = 1 );
var_dump( $foo = 0 );
var_dump( $foo = 'bar' );
var_dump( $foo = false );
Folgender Block wird also nie ausgeführt:
PHP:
if( $foo = false ) {
	// …
}
Demzufolge gibt der Ausdruck „((int) $a = "string")“ dasselbe zurück wie „(int)"string"“ oder „intval("string")“.
 
Zurück