Das Leben ist immer anders als die Realität.

PHP: universe broken

rakudave, 9. August 2008, 15:44 Uhr

Es ist ja schön, wenn man alle Variabeltypen miteinander verwursteln kann, aber das kann auch ins Auge gehen. Das folgende Beispiel liess mir kalte Schauer den Rücken hinunter laufen:

Ist euch aufgefallen, was da passiert?

  • ( 'string' == true ) weil jeder nicht-null String true wird.
  • ( 0 == false ) weil jeder Integer 0 eine heimliche Umwandlung vollzieht und false ist
  • Und, ( 'string' == 0 ) weil ein String, der mit einem Integer verglichen wird, still und leise auch zum Integer wird. Wenn er Zahlen enthält, werden diese als Integer repräsentiert, wenn nicht ist der String 0. Also gibt der Dritte true zurück. Oops…

Was bleibt, ist jedes Mal === zu verwenden, wenn man keinen Ärger haben will.

Genaueres über PHP-gewurstel auf http://uk.php.net/manual/en/types.comparisons.php

[via otton.com]