Bobby: php.net, in_array, Fehler?!

Beitrag lesen

Moin

'egg' => true,
    'cheese' => false,

in_array(null, $array); // true
in_array(false, $array); // true
in_array(765, $array); // true
in_array(763, $array); // true
in_array('egg', $array); // true
in_array('hhh', $array); // true       FEHLER???
in_array(array(), $array); // true
...
?>[/code]

Müsste:
in_array('hhh', $array);
Nicht FALSE sein?

nach meinem Verständnis eigentlich schon, auch der Test mit 763 sollte schon false ergeben. Das ist sicher wieder so'n Fallstrick mit der automatischen Typumwandlung - nur dass ich hier nicht einmal den Ansatz einer Erklärung

Genau so ist es.. durch die beiden einträge egg => true und cheese => false wird jede Prüfung mittels in-array gültig, da durch die implizite Datentypwandlung jeder Wert außer 0, 0.0, false, "", array (), null als true interpretiert werden. Und true ist ja im array vorhanden. Die genannten werte ergeben false. Auch false ist im array vorhanden. Zur korrekten Prüfung gibts ja den strict-parameter zur Äquivalenzprüfung

Gruß Bobby

--
-> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
### Henry L. Mencken ###
-> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
### Viktor Frankl ###
ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)