PHP ist krank…

Über einen Blogbeitrag von Fefe bin ich auf dieses “interessante” Verhalten in PHP aufmerksam geworden. Was schätzt ihr, gibt folgendes Programm aus?

echo (md5("240610708") == md5("QNKCDZO")) ? "GLEICH" : "UNTERSCHIEDLICH";

Na? :)

Die Sache wird bei HackerNews etwas intensiver diskutiert. Das Problem besteht im Grunde darin, dass PHP das “0e” am Anfang als Präfix interpretiert und die Daten daher als Float-Value verwendet.

Am besten gefällt mir aber der folgende Lösungvorschlag aus der HackerNews-Diskussion:

perhaps ==== operator must reserved

php_real_equivalence_4()

But it must invoke with additional NULL-parameter to achieve real effect and analyse return value for TRUE, FALSE, NULL:
php_real_equivalence_4($x, $y, null);

Except they had to call it php_real_equivalnce_4() because php_real_equivalence_4() was taken.

2 Bemerkungen zu “PHP ist krank…”

  1. Dr. Azrael Tod

    und dann ändert sich sowas auch noch gerne in jeder Version… siehe: http://3v4l.org/ZSq5G

  2. Stefan Neufeind

    Workaround: Vergleich mit ===

    Aber ja, ist broken. Bug bei php.net mal dafür aufgemacht?

Einen Kommentar schreiben