Sementara jawaban Fosco tidak salah, ada kasus yang harus dipertimbangkan dengan yang ini: array campuran. Bayangkan saya memiliki array seperti ini:
$a = array(
"nice",
"car" => "fast",
"none"
);
Sekarang, PHP memperbolehkan sintaksis semacam ini tetapi memiliki satu masalah: jika saya menjalankan kode Fosco saya mendapatkan 0 yang salah , tetapi mengapa ini terjadi?
Karena ketika melakukan perbandingan antara string dan integer PHP mengubah string ke integer (dan ini agak bodoh menurut saya), jadi ketika array_search()mencari indeks, ia berhenti pada yang pertama karena tampaknya ("car" == 0) benar .
Menyetel array_search()ke mode ketat tidak akan menyelesaikan masalah karena array_search("0", array_keys($a))akan mengembalikan false meskipun ada elemen dengan indeks 0.
Jadi solusi saya hanya mengonversi semua indeks dari array_keys()ke string dan kemudian membandingkannya dengan benar:
echo array_search("car", array_map("strval", array_keys($a)));
Cetakan 1, mana yang benar.
EDIT:
Seperti yang Shaun tunjukkan dalam komentar di bawah, hal yang sama berlaku untuk nilai indeks, jika Anda mencari indeks int seperti ini:
$a = array(
"foo" => "bar",
"nice",
"car" => "fast",
"none"
);
$ind = 0;
echo array_search($ind, array_map("strval", array_keys($a)));
Anda akan selalu mendapatkan 0, yang salah, jadi solusinya adalah dengan melemparkan indeks (jika Anda menggunakan variabel) ke string seperti ini:
$ind = 0;
echo array_search((string)$ind, array_map("strval", array_keys($a)));