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
Freigeben: 2024-12-22 11:45:09
Original
164 Leute haben es durchsucht

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"];
Nach dem Login kopieren

Ü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 ])
Nach dem Login kopieren

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)
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage