array_column($rows, $column) bir satır listesindeki her satırdan $column değerini döndürür. Bir kayıt tablosunu tek bir alandan oluşan düz bir diziye çevirir; implode, in_array, array_sum veya array_search öncesinde ihtiyacınız olan budur.
Satırlar her yerden gelebilir: çözümlenmiş bir JSON yanıtı, bir CSV dosyası ya da ilişkisel dizilerden oluşan bir dizi döndüren bir veritabanı sorgusu.
Anahtar değer çiftleri oluşturmak için indeks anahtarı kullanma
Üçüncü argüman, değeri her sonucun anahtarı olacak bir alanı belirtir. array_column($users, 'name', 'id') örneğin bir <select> listesi için id'den isme bir arama tablosu oluşturmanın olağan yoludur.
İki satır aynı indeks değerini paylaşırsa sonraki satır öncekinin üzerine yazar.
null ile satırların tamamını id'ye göre indeksleme
Her tam satırı indeks alanına göre yeniden anahtarlanmış olarak tutmak için sütun olarak null verin. Bir satırı id ile aramak o zaman bir döngü yerine doğrudan bir anahtar erişimidir.
İndeksi bir kez oluşturun, sonraki her arama anında olur; bu, bir döngüde birçok id aradığınızda önemlidir.
array_column ve array_search ile bir satırı bulma
Belirli bir değere sahip satırı bulmak için sütunda arayın ve geri aldığınız konumu kullanın. Sonucu !== false ile kontrol edin, çünkü ilk satırdaki bir eşleşme 0 döndürür.
Bu, $users dizisinin 0, 1, 2 anahtarlarına sahip olmasına dayanır, çünkü array_column bir liste döndürür. Dizi süzüldüyse ve boşlukları varsa önce array_values($users) çağırın. array_search sayfası false ile 0 tuzağını ayrıntılı anlatır.
Bir sütunu toplama, sayma veya ortalamasını alma
array_column matematik yardımcılarıyla iyi eşleşir: alanı çıkarın, sonra toplayın.
Miktar çarpı fiyat gibi birkaç alandan hesaplanan bir değer için araç, son satırdaki gibi array_map fonksiyonudur.
Nesnelerle array_column
Bir nesne listesinde array_column public özellikleri okur. Private ve protected özellikleri göremez.
İkinci çağrı boş bir dizi döndürür: password private olduğu için her nesne atlanır.
Alanı eksik satırlar atlanır
array_column alanı olmayan bir satır için yer tutucu doldurmaz. Sonuç girdiden kısa olabilir, bu yüzden konumları artık satırlarla eşleşmez.
İlk sonuçta iki telefon var ve Bob'un telefonu olmadığına dair hiçbir ipucu yok. İsmi indeks anahtarı yaptığınızda hangi numaranın kime ait olduğunu görebilirsiniz; bazı satırlarda alan eksik olabildiğinde daha güvenli biçim budur.
Sıkça Sorulan Sorular
PHP'de array_column ne işe yarar?
Bir satır listesini (diziler veya nesneler) alır ve her satırdan tek bir alanın değerini döndürür: array_column($users, 'email') düz bir e-posta dizisi verir. Alanı olmayan satırlar atlanır.
Satırlardan anahtar değer dizisi nasıl oluştururum?
Anahtar alanını üçüncü argüman olarak verin: array_column($users, 'name', 'id') [id => name, ...] döndürür. Satırların tamamını id'ye göre indekslenmiş tutmak için ikinci argüman olarak null verin: array_column($users, null, 'id').
Bir satırda alan eksik olduğunda array_column ne yapar?
O satırı atlar, bu yüzden array_column($people, 'phone') satır sayısından az değer döndürebilir ve konumlar artık eşleşmez. Her değerin hangi satırdan geldiğini görmek için bir indeks anahtarı ekleyin: array_column($people, 'phone', 'name').
array_column nesnelerle çalışır mı?
Evet, bir nesne dizisinde public özellikleri ve sınıf __isset tanımladığında __get üzerinden sunulan özellikleri okur. Private ve protected özellikler atlanır.