Für typschwache Vergleiche habe ich es so in Erinnerung dass wenn mindestens eine Seite einen numerischen Wert darstellt beide Seiten zu Integer gecastet werden und dann verglichen werden.
Nun hat sich mit PHP8 da einiges geändert. Beispiel:
Unter PHP8 wird aber nach wie vor beim casten von "42a" zu int eine 42 geliefert.
Leerzeichen und Steuerzeichen werden beim Vergleich scheinbar ignoriert.
Meine obige Gedankenstütze ist damit hinfällig. Etwas an Hintergrundinformationen fand ich hier. Insgesamt wirkt das alles etwas halbherzig auf mich.
Bei solch grundlegenden Änderungen dürfte es an der einen oder anderen Stelle beim Umstieg auf PHP8 mal krachen. Gut beraten ist dann jeder der vorzugsweise auf typstrenge Vergleiche setzt.
Der Grund für diese Änderung erschließt sich für mich nicht. Weis hier jemand mehr?
PHP-Code:
var_dump("42" == " 42"); //true
PHP-Code:
var_dump(42 == "42a"); //false PHP8, true PHP7
PHP-Code:
var_dump((int)"42x"); //int(42)
PHP-Code:
var_dump(42 == "42."); // true
var_dump(42 == " 42 \t\n"); //true
var_dump("42" == " 42"); //true
Bei solch grundlegenden Änderungen dürfte es an der einen oder anderen Stelle beim Umstieg auf PHP8 mal krachen. Gut beraten ist dann jeder der vorzugsweise auf typstrenge Vergleiche setzt.
Der Grund für diese Änderung erschließt sich für mich nicht. Weis hier jemand mehr?
Kommentar