array_search($value, $array) $value değerine eşit ilk elemanın anahtarını, hiçbir eleman eşleşmezse false döndürür. Bulunan bir anahtar 0 olabileceği için sonucu if (($key = array_search('pear', $fruits)) !== false) örneğindeki gibi !== false ile test edin.
Yalnızca evet veya hayıra ihtiyacınız varsa in_array() bunu doğrudan söyler. array_search(), değerin nerede durduğunu bilmeniz gerektiğinde içindir, örneğin onu değiştirmek veya silmek için.
0 ve false tuzağı
En yaygın array_search() hatası: değer ilk elemandır, anahtarı 0'dır ve if ($key) 0 değerini false sayar. Kod tam orada duran bir değer için "bulunamadı" der. Yalnızca gerçek bir false ile eşleşen !== false ile karşılaştırın.
!= false da if ($key) ile aynı hataya sahiptir, çünkü 0 == false true olur. Onları yalnızca katı operatör ayırt eder.
Katı arama
in_array() gibi array_search() da üçüncü argüman olarak true vermediğiniz sürece == ile karşılaştırır. Gevşek mod bir dizgenin bir sayıyı, null değerinin 0 değerini bulmasına izin verir ve beklemediğiniz bir anahtar döndürür.
Bir değere sahip tüm anahtarları bulma
array_search() ilk eşleşmede durur. array_keys($array, $value) eşleşen her anahtarı bir dizi olarak döndürür; katı karşılaştırma için true ekleyin. Boş bir sonuç eşleşme yok demektir, bu yüzden 0 ve false karışıklığı olmaz.
array_column ile çok boyutlu dizide arama
array_search() iç içe dizilerin içine bakmaz. Bir satır listesinde aradığınız alanı array_column() ile çıkarın; o listedeki konumlar satır numaralarıyla eşleşir, bu yüzden sonuç satırın indeksidir.
array_column() çıktısını 0'dan yeniden numaralar, bu yüzden bu yalnızca satırlar boşluksuz 0, 1, 2 olarak numaralandığında örtüşür. unset() veya array_filter() sonrasında numaralamada boşluklar olur; önce satırlarda array_values() çalıştırın ya da son iki satırdaki anahtarlı aramayı kullanın. array_column() indeks anahtarlı biçimi daha ayrıntılı anlatır.
Büyük küçük harf duyarsız arama
array_search() dizgeleri birebir karşılaştırır. Büyük küçük harfi yok saymak için iki tarafı da küçük harfe çevirin. array_map() anahtarları korur, bu yüzden geri aldığınız anahtar orijinal dizideki anahtardır.
Arama ve değiştirme veya silme
Arama yapmanın olağan nedeni bulduğunuz eleman üzerinde işlem yapmaktır. Anahtar elinizdeyken değiştirmek için atama yapın veya silmek için unset() kullanın ve her zaman önce !== false ile koruyun: unset($arr[false]) anahtarı 0 olan elemanı sessizce siler.
Sıkça Sorulan Sorular
Değer bulunamazsa array_search ne döndürür?
false. Değer bulunduğunda anahtarını döndürür ve bu 0 veya boş bir dizge olabilir, bu yüzden sonucu if ($key) veya != false ile değil, her zaman !== false ile kontrol edin.
array_search kontrolüm ilk eleman için neden başarısız oluyor?
İndisli bir dizinin ilk elemanının anahtarı 0'dır ve 0 falsy'dir. Bu yüzden if (array_search('a', ['a', 'b'])) bulunamadı dalına girer. if (array_search('a', $arr) !== false) yazın.
PHP'de bir değere ait tüm anahtarları nasıl bulurum?
array_search() ilk eşleşmede durur. array_keys($array, $value, true) değeri eşleşen her anahtarı bir dizi olarak döndürür (hiç yoksa boş).
PHP'de çok boyutlu bir dizide nasıl arama yaparım?
Alanı düz bir listeye çıkarın ve onda arayın: $i = array_search('ada@example.com', array_column($users, 'email'));, sonra satırı $users[$i] olarak okuyun. Bu, satırlar 0, 1, 2 olarak numaralandığında çalışır; aksi halde foreach ile dolaşın.