Praktisch jeder PHP Entwickler bzw. Frontend Entwickler kennt das Gefühl, wenn man sich nicht erklären kann warum PHP bzw. JavaScript sich verhalten, wie sie es tun. Beide dynamischen Sprachen verwirren dabei am liebsten mit ihrem oft nicht einfach nachvollziehbaren Verhalten bei der automatischen Konvertierung von Typen.
Type Conversion, also die Umwandlung von einem Typ (z.B. String) in einen anderen (z.B. Number) bei einem Vergleich, sorgt wahrscheinlich für die meiste Verwirrung. Ein PHP Beispiel von phpwtf.org:
<?php $a = 0; $b = 'x'; var_dump(FALSE == $a); // bool(true) var_dump($a == $b); // bool(true) var_dump($b == TRUE); // bool(true) ?>
Das sieht nicht wirklich logisch aus, eine Erklärung gibt es aber natürlich schon. Hier noch ein JavaScript Beispiel von wtfjs.com:
new Array([],null,undefined,null) == ",,,"; // true
Klare Sache, oder?! Die Erklärung hierfür ist allerdings etwas umfangreicher.
Die beiden Seiten wtfjs.com und phpwtf.org illustrieren anhand von zahlreichen Beispielen, was einem so alles begegnen kann - wer sich also einige Kopfschmerzen in der Zukunft sparen möchte sollte sich ab und an mal durchklicken, es gibt viel schönes zu entdecken.