Array
Array terindeks dan asosiatif, array multidimensi, destructuring, spread operator, dan fungsi array yang paling sering dipakai.
Apa itu array?
Array menyimpan banyak nilai dalam satu variabel. Di PHP, array sangat serbaguna: ia berfungsi sebagai daftar, kamus (peta kunci → nilai), tumpukan, antrean, bahkan "tabel". Gunakan sintaks pendek [ ].
$buah = ['apel', 'jeruk', 'mangga']; // terindeks: 0, 1, 2
echo $buah[0]; // apel
$siswa = ['nama' => 'Sari', 'umur' => 17]; // asosiatif
echo $siswa['nama']; // Sari
Menambah, mengubah, menghapus
$buah[] = 'pisang'; // tambah di akhir
$buah[1] = 'anggur'; // ubah
unset($buah[0]); // hapus (indeks TIDAK disusun ulang)
$buah = array_values($buah); // susun ulang indeks 0..n
echo count($buah); // jumlah elemen
echo in_array('apel', $buah, true); // true bila ada (strict)
echo isset($siswa['alamat']); // false: kunci tidak ada
Array multidimensi
$produk = [
['nama' => 'Mouse', 'harga' => 75000, 'stok' => 12],
['nama' => 'Keyboard', 'harga' => 250000, 'stok' => 0],
];
echo $produk[1]['nama']; // Keyboard
Bentuk ini sama persis dengan JSON — itulah sebabnya PHP sangat nyaman untuk membuat API.
Destructuring & spread
[$a, $b] = [10, 20]; // $a=10, $b=20
['nama' => $nama, 'umur' => $umur] = $siswa; // berdasarkan kunci
$gabung = [...$buah, ...['kiwi', 'melon']]; // spread (kunci string didukung sejak 8.1)
[$x, $y] = [$y, $x]; // tukar nilai tanpa variabel bantu
Fungsi array yang wajib dikuasai
| Fungsi | Kegunaan |
|---|---|
array_map($fn, $arr) | Mengubah tiap elemen → array baru |
array_filter($arr, $fn) | Menyaring elemen yang memenuhi syarat (kunci dipertahankan) |
array_reduce($arr, $fn, $awal) | Meringkas jadi satu nilai (mis. total) |
array_column($rows, 'harga', 'id') | Mengambil satu kolom dari array 2 dimensi |
array_sum, array_unique | Jumlah dan hapus duplikat |
array_keys, array_values, array_merge | Ambil kunci/nilai, gabungkan |
usort($arr, $fn) | Urut dengan fungsi pembanding (pakai <=>) |
array_key_exists, array_search | Cek kunci, cari nilai |
array_slice, array_splice | Ambil / potong bagian array |
array_is_list() (8.1) | Apakah array terindeks 0..n berurutan |
Contoh gabungan: map + filter + reduce
$produk = [
['nama' => 'Mouse', 'harga' => 75000, 'stok' => 12],
['nama' => 'Keyboard', 'harga' => 250000, 'stok' => 0],
['nama' => 'Monitor', 'harga' => 1500000,'stok' => 3],
];
$ada = array_filter($produk, fn ($p) => $p['stok'] > 0);
$nama = array_map(fn ($p) => $p['nama'], $ada);
$nilai = array_reduce($ada, fn ($c, $p) => $c + $p['harga'] * $p['stok'], 0);
usort($produk, fn ($a, $b) => $b['harga'] <=> $a['harga']); // termahal dulu
fn ($p) => ... adalah arrow function — fungsi singkat satu ekspresi yang otomatis "melihat" variabel di luarnya (dibahas di bab Fungsi).
Hati-hati
- Array di PHP disalin saat ditugaskan (copy-on-write); mengubah salinan tidak mengubah aslinya.
- Mengakses kunci yang tidak ada memunculkan warning. Gunakan
$arr['x'] ?? 'default'. array_filtermempertahankan kunci — bungkus denganarray_values()bila butuh indeks bersih.