Çok boyutlu dizi, elemanları dizi olan bir dizidir. Onu her seviye için bir çift köşeli parantezle okursunuz: $grid[1][2] 1. satır, 2. sütundur ve $users[0]['name'] ilk kayıttaki isimdir.
İkinci biçim, adlandırılmış alanları olan bir kayıt listesi, en sık karşılaşacağınızdır: bir veritabanı sorgusu, çözümlenmiş bir JSON yanıtı ya da ayrıştırılmış bir CSV dosyası genellikle bunu verir. Her kayıt bir ilişkisel dizidir.
İç içe dizi oluşturma
İç içelik ihtiyacınız kadar derine gidebilir ve seviyeler sayısal ve dizge anahtarları karıştırabilir. Bir yapılandırma dizisi yaygın bir örnektir: her biri ayarlar veya listeler tutan adlandırılmış bölümler.
Satır ve iç içe değer ekleme
$rows[] = [...] bütün bir satırı ekler. $arr['key'][] = $value iç içe bir listenin içine ekler ve PHP iç diziyi ilk seferde oluşturur, bu yüzden değerleri gruplamak hazırlık gerektirmez.
Çok boyutlu bir dizi üzerinde dolaşma
Her seviye için bir foreach kullanın. Bir kayıt listesinde alanları adıyla okuduğunuz için genellikle tek döngü yeterlidir. Bir ızgarada iç döngü her satırın hücrelerini dolaşır.
Bir diziden HTML tablo oluşturma
Bir satır dizisi doğrudan bir HTML tabloya karşılık gelir: ilk satırın anahtarları başlık olur ve her satır bir <tr> olur. Çalıştırın, Page sekmesi oluşturulan tabloyu gösterir; bir değeri değiştirin veya bir satır ekleyin ve tekrar çalıştırın.
foreach (...): ... endforeach; biçimi şablonlar için yazılmış aynı döngüdür, böylece HTML okunur kalır.
Tüm satırlardan tek bir sütun alma
array_column() her satırdan bir alanı düz bir listeye çıkarır. Sonucu başka bir alana göre anahtarlamak için üçüncü bir argüman verin; bu, bir kayıt listesini bir arama tablosuna dönüştürür.
Satırları bir alana göre sıralama
usort() satırları bir karşılaştırma fonksiyonuyla sıralar. Uzay gemisi operatörü <=> -1, 0 veya 1 döndürür, usort() tam olarak bunu bekler. Azalan sırada sıralamak için $a ve $b yerini değiştirin.
count($players, COUNT_RECURSIVE) 3 satırı ve içlerindeki 6 alanı sayar, bu yüzden 9 yazdırır.
Sık yapılan hata: eksik olabilecek derin bir anahtarı okumak
cache anahtarı yokken $config['cache']['ttl'] okumak Warning: Undefined array key "cache" ve ardından bir sonraki seviye için Warning: Trying to access array offset on null yazdırır. ?? operatörü zincirin tamamını tek seferde kontrol eder ve hiçbir zaman uyarı vermez, bu yüzden isteğe bağlı iç içe değerleri okumanın güvenli yoludur.
Sıkça Sorulan Sorular
PHP'de çok boyutlu bir dizideki değere nasıl erişirim?
Her seviye için bir çift köşeli parantez ekleyin: $matrix[1][0] 1. satır, 0. sütundur ve $users[0]['email'] ilk kullanıcının e-postasıdır. Her köşeli parantez bir öncekinin döndürdüğü diziden okur.
PHP'de çok boyutlu bir dizi üzerinde nasıl dolaşırım?
Her seviye için bir foreach iç içe yazın: foreach ($rows as $row) { foreach ($row as $key => $value) { ... } }. Bir kayıt dizisinde genellikle tek döngü yeterlidir ve alanları adıyla okursunuz: $row['name'].
Çok boyutlu bir diziye nasıl eleman eklerim?
Bütün bir satırı $rows[] = ['name' => 'Linus', 'age' => 54]; ile ya da iç içe bir dizinin içine $groups['admins'][] = 'Grace'; ile ekleyin. Anahtar henüz yoksa PHP iç diziyi oluşturur.
PHP'de sıfırlarla dolu bir 2D diziyi nasıl oluştururum?
İki array_fill() çağrısını iç içe yazın: $grid = array_fill(0, 3, array_fill(0, 4, 0)); 4 sıfırdan oluşan 3 satır verir. Her satır kendi kopyasıdır, bu yüzden $grid[0][0] = 5; yalnızca ilk satırı değiştirir.