Avatar ·

Unterschied zwischen == und === in PHP

Unterschied zwischen == und === in PHP: seltsames Verhalten beim Vergleich von String und Zahl

Hallo zusammen! Ich bin neu in PHP und bin auf unerwartetes Verhalten der Vergleichsoperatoren gestoßen. Ich versuche, den Unterschied zwischen == (lose Gleichheit) und === (strenge Gleichheit) zu verstehen.

Ich habe einen einfachen Code:

$a = '123abc';\n$b = 123;\n\nvar_dump($a == $b);  // Ergebnis: true\nvar_dump($a === $b); // Ergebnis: false

Ich habe erwartet, dass beide Vergleiche false zurückgeben, weil die Typen unterschiedlich sind (String und Zahl). Aber == gibt true zurück. Warum passiert das? Ich habe gelesen, dass == Typen umwandelt, aber ich verstehe nicht, wie der String '123abc' gleich der Zahl 123 sein kann.

Was ich bereits versucht habe:

  • Mit verschiedenen Strings getestet (z.B. 'abc123' — dort gab == false zurück)
  • PHP-Dokumentation zu Operatoren gelesen