Während die Antwort von Fosco nicht falsch ist, gibt es einen Fall, der bei diesem berücksichtigt werden muss : gemischte Arrays. Stellen Sie sich vor, ich habe ein Array wie dieses:
$a = array(
"nice",
"car" => "fast",
"none"
);
PHP erlaubt diese Art von Syntax, hat aber ein Problem: Wenn ich den Code von Fosco ausführe, erhalte ich 0 den für mich falschen , aber warum passiert das?
Denn wenn PHP Vergleiche zwischen Zeichenfolgen und Ganzzahlen durchführt, konvertiert es Zeichenfolgen in Ganzzahlen (und das ist meiner Meinung nach ein bisschen dumm). Wenn also array_search()nach dem Index gesucht wird, stoppt es beim ersten, weil es anscheinend ("car" == 0) wahr ist .
Die Einstellung array_search()auf den strengen Modus löst das Problem nicht, da dann array_search("0", array_keys($a))false zurückgegeben wird, selbst wenn ein Element mit dem Index 0 vorhanden ist.
Meine Lösung konvertiert also einfach alle Indizes von array_keys()in Zeichenfolgen und vergleicht sie dann korrekt:
echo array_search("car", array_map("strval", array_keys($a)));
Druckt 1, was richtig ist.
BEARBEITEN:
Wie Shaun im Kommentar unten ausgeführt hat, gilt das Gleiche für den Indexwert, wenn Sie zufällig nach einem int-Index wie diesem suchen:
$a = array(
"foo" => "bar",
"nice",
"car" => "fast",
"none"
);
$ind = 0;
echo array_search($ind, array_map("strval", array_keys($a)));
Sie werden immer bekommen 0, was falsch ist, also wäre die Lösung, den Index (wenn Sie eine Variable verwenden) in eine Zeichenfolge wie diese umzuwandeln:
$ind = 0;
echo array_search((string)$ind, array_map("strval", array_keys($a)));