Array multidimensi adalah array yang elemen-elemennya berupa array. Kamu membacanya dengan sepasang kurung siku untuk setiap level: $grid[1][2] adalah baris 1, kolom 2, dan $users[0]['name'] adalah nama di record pertama.
Bentuk kedua, list berisi record dengan field yang diberi nama, adalah yang paling sering kamu temui: bentuk inilah yang biasanya kamu dapat dari query database, response JSON yang sudah di-decode, atau file CSV yang sudah di-parse. Setiap record adalah sebuah array asosiatif.
Membuat array bersarang
Nesting bisa sedalam yang kamu butuhkan, dan setiap level boleh mencampur key numerik dan key string. Array konfigurasi adalah contoh yang umum: bagian-bagian yang diberi nama, masing-masing berisi pengaturan atau list.
Menambah baris dan nilai bersarang
$rows[] = [...] menambahkan satu baris utuh. $arr['key'][] = $value menambahkan ke dalam list bersarang, dan PHP membuat array di dalamnya pada kali pertama, jadi mengelompokkan nilai tidak butuh persiapan apa pun.
Perulangan atas array multidimensi
Pakai satu foreach per level. Untuk list berisi record, satu loop biasanya cukup karena kamu membaca field-nya berdasarkan nama. Untuk grid, loop dalam menelusuri sel-sel di setiap baris.
Membuat tabel HTML dari array
Array berisi baris langsung cocok dengan tabel HTML: key dari baris pertama menjadi header, dan setiap baris menjadi sebuah <tr>. Jalankan, maka tab Halaman menampilkan tabel yang sudah dirender; ubah sebuah nilai atau tambahkan baris lalu jalankan lagi.
Bentuk foreach (...): ... endforeach; adalah loop yang sama yang ditulis untuk template, jadi HTML-nya tetap mudah dibaca.
Mengambil satu kolom dari semua baris
array_column() mengambil satu field dari setiap baris ke dalam list yang datar. Berikan argumen ketiga untuk memakai field lain sebagai key hasilnya, yang mengubah list berisi record menjadi tabel lookup.
Mengurutkan baris berdasarkan field
usort() mengurutkan baris-baris dengan fungsi pembanding. Operator spaceship <=> mengembalikan -1, 0, atau 1, persis yang diharapkan usort(). Tukar $a dan $b untuk mengurutkan secara menurun.
count($players, COUNT_RECURSIVE) menghitung 3 baris ditambah 6 field di dalamnya, itulah sebabnya hasilnya 9.
Kesalahan umum: membaca key dalam yang mungkin tidak ada
Membaca $config['cache']['ttl'] saat tidak ada key cache mencetak Warning: Undefined array key "cache", diikuti Warning: Trying to access array offset on null untuk level berikutnya. Operator ?? memeriksa seluruh rantai sekaligus dan tidak pernah memberi warning, jadi inilah cara yang aman untuk membaca nilai bersarang yang opsional.
Pertanyaan yang sering diajukan
Bagaimana cara mengakses nilai di array multidimensi PHP?
Tambahkan sepasang kurung siku untuk setiap level: $matrix[1][0] adalah baris 1, kolom 0, dan $users[0]['email'] adalah email user pertama. Setiap kurung siku membaca dari array yang dikembalikan oleh kurung siku sebelumnya.
Bagaimana cara melakukan perulangan atas array multidimensi di PHP?
Tulis satu foreach bersarang per level: foreach ($rows as $row) { foreach ($row as $key => $value) { ... } }. Untuk array berisi record, biasanya kamu butuh satu loop saja dan membaca field-nya berdasarkan nama: $row['name'].
Bagaimana cara menambah elemen ke array multidimensi?
Tambahkan satu baris utuh dengan $rows[] = ['name' => 'Linus', 'age' => 54];, atau tambahkan di dalam array bersarang dengan $groups['admins'][] = 'Grace';. PHP membuat array di dalamnya jika key-nya belum ada.
Bagaimana cara membuat array 2D berisi nol di PHP?
Gabungkan dua pemanggilan array_fill(): $grid = array_fill(0, 3, array_fill(0, 4, 0)); menghasilkan 3 baris berisi 4 nol. Setiap baris adalah salinannya sendiri, jadi $grid[0][0] = 5; hanya mengubah baris pertama.