true or false
heute wäre fast das weltbild von einigen von uns (inklusive mir) zerbrochen ;)
beim bug fixing hat sich etwas interessantes herausgestellt:
(0=='string') ergibt true
viele (auch ich) dachten aber, dass das ergebnis dieses vergleichs false ist.
meine logik:
-> 0 wird als false behandelt
-> 'string' ist kein leerstring und daher true
-> daraus ergibt sich: (false==true) ist false
diese logik stimmt auch:
sonderfall: beim vergleich von einem string mit einem integer wird der string zuerst in einen integer umgewandelt und dann erst verglichen [string in a numeric context]:
somit ergibt sich:
anmerkung: wenn ein string in einen integer konvertiert wird, ist dieser immer 0 außer er beginnt mit einer zahl.
FYI
-> typenvergleich: [php.net] bzw [blueshoes.org]
-> casting: boolean | string | integer
mfg mailo
beim bug fixing hat sich etwas interessantes herausgestellt:
(0=='string') ergibt true
viele (auch ich) dachten aber, dass das ergebnis dieses vergleichs false ist.
meine logik:
-> 0 wird als false behandelt
-> 'string' ist kein leerstring und daher true
-> daraus ergibt sich: (false==true) ist false
diese logik stimmt auch:
var_dump((bool)0); // bool(false)
var_dump((bool)'string'); // bool(true)
var_dump((bool)'string'); // bool(true)
sonderfall: beim vergleich von einem string mit einem integer wird der string zuerst in einen integer umgewandelt und dann erst verglichen [string in a numeric context]:
var_dump((bool)((int)'string')); // bool(false)
somit ergibt sich:
var_dump((bool)0); // bool(false)
var_dump((bool)((int)'string')); // bool(false)
und (false==false) ist true.var_dump((bool)((int)'string')); // bool(false)
anmerkung: wenn ein string in einen integer konvertiert wird, ist dieser immer 0 außer er beginnt mit einer zahl.
var_dump((int)'string'); // int(0)
var_dump((int)'9string'); // int(9)
var_dump((int)'9string'); // int(9)
FYI
-> typenvergleich: [php.net] bzw [blueshoes.org]
-> casting: boolean | string | integer
mfg mailo
mailo - 11. Dez, 21:50
hm, das merk i mir... oh mann...