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..
Geschrieben in Codechaos |
Keine Kommentare »