Kopfschmerzen und PHP
Da denkt man, man hat PHP und dessen gestörten Datentypen einigermaßen im Griff und dann kommt soetwas:
$var = 0; if ($var == "all") { echo "true"; } else { echo "false"; }
Man würde vermuten, das Ergbnis sei false, aber seltsamerweiße kommt hier true heraus.
Schauen wir uns $var und den String “all” mal genauer an:
$var = 0; var_dump((bool)"all")."\n"; var_dump((bool)$var); // Ergbnis: // bool(true) // bool(false)
Wieso ergibt dann in PHP true == false true?
Den Grund habe ich auf der PHP type comparison tables im letzen Comment gefunden:
“php” == 0
This is true, because the string is casted interally to an integer. Any string (that does not start with a number), when casted to an integer, will be 0.
Wie auch immer.
Ich nutze jedenfalls für meinen Teil strikte Vergleiche mit drei Leerzeichen ===, damit ist man immer “save”. Am besten wäre es natürlich überhaupt nicht die Datentypen einer Variable zu mixen, aber bei kleinen Quick&Dirty Scripte passiert soetwas mal.

Probier mal
int $var = 0;
und
printf(“%i”, $var);