Folgender Code gibt darunter stehende Ausgabe:
if( $verstecke_buchstabe_int == ‚num‘ ){
echo ‚$verstecke_buchstabe_int=>‘.$verstecke_buchstabe_int;
$verstecke_buchstabe_int => 0
Wie ist das möglich?!
Folgender Code gibt darunter stehende Ausgabe:
if( $verstecke_buchstabe_int == ‚num‘ ){
echo ‚$verstecke_buchstabe_int=>‘.$verstecke_buchstabe_int;
$verstecke_buchstabe_int => 0
Wie ist das möglich?!
kein Bug,
hängt mit der dynamischen typisierung von PHP zusammen.
da $verstecke_buchstabe_int eine Zahl ist, versucht der PHP Interpreter aus
if( $verstecke_buchstabe_int == ‚num‘ ) einen Zahlenvergleich zu machen
if($verstecke\_buchstabe\_int == 0)
um das zu verhindern gibt es 2 möglichkeiten:
if( (string) $verstecke\_buchstabe\_int == 'num' )
oder
if( $verstecke\_buchstabe\_int === 'num' )
im ersten Fall wird $versteckte_buchstaben_int in einen String konvertiert und somit wird ein Stringvergleich gemacht.
im zweiten Fall wird ein typensicherer Vergleich gemacht.
heißt neben dem Inhalt der beiden Werte wird auch der typ der Werte verglichen.
siehe auch: http://www.php.net/manual/de/types.comparisons.php
Gruß
und wenn wir das anders rum schreiben ?
if( ‚num‘ == $verstecke_buchstabe_int )
wird nun string konvertiert ?
nein
es ist egal ob die Werte vor oder hinter dem Vergleichs-Operator stehen.
Gruß
huch hat sich seit PHP4 bzw PHP3 ganz schön was ve
huch hat sich seit PHP4 bzw PHP3 ganz schön was veändert.
is ja eigentlich positiv. muss aber jetzt sehr mit alten scripten aufpasssen.
danke