Heim >Backend-Entwicklung >PHP-Tutorial >Warum gibt „in_array()' „True' für einen nicht vorhandenen Wert in PHP zurück?

Warum gibt „in_array()' „True' für einen nicht vorhandenen Wert in PHP zurück?

Barbara Streisand
Barbara StreisandOriginal
2024-12-22 11:45:09386Durchsuche

Why Does `in_array()` Return True for a Non-Existent Value in PHP?

Eigenartiges Verhalten im Array mit WAHRHEIT

Die in_array()-Funktion von PHP zeigt ein unerwartetes Verhalten, wenn mit einem Array gearbeitet wird, das den booleschen Wert TRUE enthält.

Betrachten wir Folgendes array:

$arr = [TRUE, "some string", "something else"];

Überraschenderweise gibt in_array("test", $arr) true zurück, obwohl „test“ nicht im Array enthalten ist. Das gleiche ungewöhnliche Ergebnis ergibt sich mit array_search("test", $arr), das 0 zurückgibt.

Dieses Verhalten ist kein Fehler, sondern eine gut dokumentierte Funktion.

Genau genommen Apropos: Den dritten Parameter verstehen

Sowohl in_array() als auch array_search() verfügen über einen optionalen dritten Parameter, $strict, der Der Standardwert ist FALSE.

bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ])

Dies bedeutet, dass beide Funktionen standardmäßig einen losen Vergleich (==) verwenden. Sie bewerten Werte ausschließlich nach Gleichheit und ignorieren ihre Typen. Folglich gibt TRUE == „jede nicht leere Zeichenfolge“ im gegebenen Beispiel aufgrund von Typjonglage „true“ zurück.

Strenge erzwingen: $strict auf TRUE setzen

Um genaue Vergleiche sicherzustellen, können Sie $strict auf TRUE setzen. Dadurch wird PHP gezwungen, einen strikten Vergleich (===) zu verwenden und sowohl den Wert als auch den Typ der verglichenen Werte zu überprüfen.

$result = in_array("test", $arr, TRUE);
var_dump($result); // Output: bool(false)

In diesem Fall gibt in_array() wie erwartet korrekt false zurück.

Denken Sie daran, dass das Verständnis der Nuancen des Typ-Jonglierens und der Rolle von $strict bei der Verwendung von in_array() und array_search() von entscheidender Bedeutung ist. Diese Funktionen bieten leistungsstarke Suchfunktionen, ihr Verhalten kann jedoch unvorhersehbar sein, wenn diese Feinheiten übersehen werden.

Das obige ist der detaillierte Inhalt vonWarum gibt „in_array()' „True' für einen nicht vorhandenen Wert in PHP zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn