PHP - Sebastian 1:0

April 15th, 2008 von Sebastian

Wie einem die Semantik einer Sprache ein Schnippchen schlagen kann, kann man sich manchmal gar nicht so leicht vorstellen. Dass das ganze aber schneller gehen kann, als man denkt, habe ich heute erfahren müssen:

Wer hätte gedacht, dass  die Bedingung innerhalb der folgenden Schleife doch tatsächlich false zurück gibt:

foreach( $units as $key => $unit ) {
if( $key != "main" ) {
...
}
}

PHP wertet den Index des Array ($key), der ein Integer ist, als boolschen Wert. Dieser, evaluiert mit ungleich “main” (”main” ergibt true, wird zu bool gecastet, da ja 0 auch ein boolscher Wert ist *hust*) ergibt beim ersten Array-Index (nämlich 0) false, denn 0, als boolscher Wert (false) interpretiert, ungleich true lässt die Bedingung nicht zutreffen..

Argh.. unglaublich. Manchmal wäre eine etwas genauere Typisierung doch schön, soviele bequeme Vorteile das in PHP auch sonst hat..

del.icio.us Slashdot Digg Facebook Technorati Google StumbleUpon Windows Live Yahoo Ask Mister Wong Germany Blogmarks

Geschrieben in Codechaos | Keine Kommentare »