Menu

PHP array_search(): Bir Değerin Anahtarını Bulma

array_search($value, $array) $value değerine eşit ilk elemanın anahtarını, yoksa false döndürür. Anahtar 0 olabileceği için sonucu her zaman !== false ile test edin. Katı aramayı, tüm eşleşmeleri bulmayı, array_column ile çok boyutlu dizide aramayı ve büyük küçük harf duyarsız aramayı öğrenin.

Bu sayfada çalıştırılabilir editörler var - düzenle, çalıştır ve sonucu anında gör.

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.

Coddy programlama dilleri çizimi

Coddy ile kodlamayı öğren

BAŞLA