Eigenartiges Verhalten von PHP in_array() und array_search(): Eintauchen in die optionalen Parameter
Bei der Verwendung von PHP in_array() kann es vorkommen, dass Sie auf Folgendes stoßen unerwartetes Verhalten bei der Suche nach nicht vorhandenen Elementen. Dieser Artikel untersucht diese Kuriosität und untersucht die Lösung durch die Einführung des obskuren $strict-Parameters.
Stellen Sie sich ein Array wie $arr = [TRUE, „some string“, „something else“] vor. Bei der Suche nach „test“ mit in_array() wird überraschenderweise TRUE zurückgegeben. In ähnlicher Weise ruft array_search() einen „ungenauen“ Index von 0 ab. Dieses Verhalten erscheint zunächst rätselhaft, was zu der Annahme führt, dass TRUE automatisch ein universelles positives Ergebnis auslöst.
Dies ist jedoch kein Fehler, sondern eine absichtliche Funktion . Sowohl in_array() als auch array_search() verfügen über einen oft übersehenen dritten Parameter, $strict, der den Vergleichsmodus bestimmt. Sein Standardwert FALSE ermöglicht einen losen (==) Vergleich, wobei Typunterschiede ignoriert werden.
Folglich wird im Fall von $arr TRUE == „jede nicht leere Zeichenfolge“ als TRUE ausgewertet. Indem Sie $strict auf TRUE setzen, weisen Sie PHP an, einen strengen (===) Vergleich durchzuführen und dabei sowohl Wert- als auch Typgleichheit zu überprüfen.
Dieses Wissen bringt Klarheit in das verwirrende Verhalten. Durch einen strengen Vergleich können Sie Fehlinterpretationen vermeiden und genaue Suchergebnisse sicherstellen. Weitere Einblicke in den Gleichheits- und Identitätsvergleich in PHP finden Sie in der bereitgestellten Referenz.
Das obige ist der detaillierte Inhalt vonWarum geben PHPs „in_array()' und „array_search()' manchmal unerwartete Ergebnisse zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!