Mengambil isi array satu per satu dengan $juara1 = $peringkat[0]; dan $juara2 = $peringkat[1]; cepat atau lambat menjadi membosankan dan rawan salah indeks. PHP menyediakan array destructuring: sintaks yang mengekstrak beberapa elemen array sekaligus ke dalam variabel-variabel terpisah dalam satu baris penugasan. Pada Chapter ini kita mempelajari destructuring untuk array indexed dan associative, pola bersarang, penggunaannya di dalam foreach, hingga trik menukar isi dua variabel tanpa variabel perantara.
Destructuring Array Indexed #
Bentuk paling sederhana dari destructuring adalah daftar variabel di dalam tanda kurung siku di sisi kiri operator penugasan. Interpreter PHP mencocokkan posisi setiap variabel dengan posisi elemen array di sisi kanan: variabel pertama menerima elemen indeks 0, variabel kedua menerima elemen indeks 1, dan seterusnya.
<?php
$peringkat = ["Budi", "Siti", "Andi"];
[$juara1, $juara2, $juara3] = $peringkat;
echo "Emas: $juara1\n";
echo "Perak: $juara2\n";
echo "Perunggu: $juara3\n";Output yang Dihasilkan:
Emas: Budi
Perak: Siti
Perunggu: AndiBaris [$juara1, $juara2, $juara3] = $peringkat; menggantikan tiga baris penugasan manual. Perhatikan bahwa sisi kiri bukan array yang dibuat, melainkan pola yang dicocokkan interpreter terhadap array di sisi kanan. Jumlah variabel tidak harus sama dengan jumlah elemen — kelebihan elemen diabaikan, seperti pada contoh berikut.
Melewatkan Elemen dengan Koma #
Ketika kita hanya membutuhkan sebagian elemen, posisi elemen yang dilewati ditandai dengan koma kosong. Interpreter tetap menghitung posisi tersebut, tetapi tidak menugaskannya ke variabel mana pun:
<?php
$jadwal = ["2026-01-15", "08:30:00", "Ceramah Teknologi"];
[$tanggal, , $kegiatan] = $jadwal;
echo "$tanggal - $kegiatan\n";Output yang Dihasilkan:
2026-01-15 - Ceramah TeknologiPada pola [$tanggal, , $kegiatan], koma kosong di tengah mewakili elemen kedua (08:30:00) yang sengaja dilewati. Hasilnya $tanggal menerima elemen pertama dan $kegiatan menerima elemen ketiga tanpa variabel sisa untuk jam.
Destructuring Array Associative #
Array asosiatif didestrukturkan dengan menyebutkan nama kunci, mirip seperti menulis array asosiatif tetapi nilai diganti variabel tujuan. Bentuk umumnya ["kunci" => $variabel] = $array;. Pendekatan ini lebih aman daripada posisi karena tidak terpengaruh bila urutan kunci berubah.
<?php
$produk = [
"nama" => "Kopi Gayo",
"harga" => 85000,
"stok" => 12,
];
["nama" => $nama, "harga" => $harga] = $produk;
echo "$nama seharga Rp$harga\n";Output yang Dihasilkan:
Kopi Gayo seharga Rp85000Pola ["nama" => $nama, "harga" => $harga] hanya mengambil dua dari tiga kunci yang tersedia; kunci stok dibiarkan tidak tersentuh. Nama variabel tujuan bebas kita pilih dan tidak harus sama dengan nama kuncinya.
Destructuring Bersarang #
Pola destructuring dapat bersarang mengikuti struktur array multidimensional. Kita cukup mengganti variabel tujuan dengan pola yang lebih dalam di dalam kurung siku:
<?php
$pembeli = [
"nama" => "Siti",
"alamat" => ["kota" => "Bandung", "kodePos" => "40115"],
];
["nama" => $nama, "alamat" => ["kota" => $kota]] = $pembeli;
echo "$nama tinggal di $kota\n";Output yang Dihasilkan:
Siti tinggal di BandungPola ["alamat" => ["kota" => $kota]] masuk satu level ke dalam, lalu mengambil kunci kota dari array alamat. Kedalaman bersarang boleh lebih dari satu level, meskipun pembacaan kode menjadi lebih sulit — untuk struktur lebih dalam biasanya lebih jelas mendestrukturkan bertahap.
Destructuring dalam foreach #
Kekuatan destructuring paling terasa di dalam foreach. Alih-alih menulis $peserta["nama"] berulang kali di badan loop, kita menulis pola langsung pada posisi value sehingga setiap iterasi otomatis mengekstrak elemen yang dibutuhkan:
<?php
$peserta = [
["nama" => "Budi", "email" => "[email protected]"],
["nama" => "Siti", "email" => "[email protected]"],
];
foreach ($peserta as ["nama" => $nama, "email" => $email]) {
echo "$nama <$email>\n";
}Output yang Dihasilkan:
Budi <[email protected]>
Siti <[email protected]>Pada setiap iterasi, foreach mengambil satu elemen $peserta, lalu mencocokkan elemen tersebut dengan pola ["nama" => $nama, "email" => $email]. Variabel $nama dan $email selalu berisi data iterasi saat ini sehingga badan loop hanya berisi logika murni. Pola array indexed [[$id, $nama], [$id, $nama]] juga bekerja dengan cara yang sama.
Menukar Isi Dua Variabel #
Destructuring memungkinkan pertukaran isi dua variabel dalam satu baris tanpa variabel perantara. Triknya: bentuk array berisi [$b, $a] di sisi kanan, lalu tangkap dengan pola [$a, $b] di sisi kiri:
<?php
$a = "kiri";
$b = "kanan";
[$a, $b] = [$b, $a];
echo "a = $a, b = $b\n";Output yang Dihasilkan:
a = kanan, b = kiriInterpreter mengevaluasi sisi kanan terlebih dahulu menjadi array ["kanan", "kiri"] (ingat pembahasan cara kerja penugasan pada chapter Variabel
), baru kemudian mendestrukturkan array tersebut ke $a dan $b. Pola ini juga berlaku untuk tiga variabel atau lebih dengan satu langkah rotasi.
Sintaks Legacy list() #
Sebelum sintaks kurung siku diperkenalkan, PHP menyediakan konstruksi bahasa list() yang bekerja identik. Anda akan sering menjumpainya di kode lama:
<?php
$koordinat = [3, 7];
list($x, $y) = $koordinat;
echo "x = $x, y = $y\n";Output yang Dihasilkan:
x = 3, y = 7Penugasan list($x, $y) menghasilkan efek yang sama persis dengan [$x, $y]. Sintaks kurung siku sendiri tersedia sejak PHP 7.1 dan kini menjadi gaya yang umum ditulis karena lebih ringkas.
Ringkasan #
Destructuring mengekstrak elemen array langsung ke variabel: berdasarkan posisi untuk array indexed, berdasarkan nama kunci untuk array associative, dan pola dapat bersarang untuk array multidimensional. Kombinasi dengan foreach menghasilkan badan loop yang bersih tanpa akses kunci berulang, sementara pola [$a, $b] = [$b, $a] menjadi cara paling ringkas menukar isi variabel. Kini kita beralih ke sisi lain operasi: mengambil daftar kunci, daftar nilai, maupun kolom tertentu dari array dengan function bawaan seperti array_keys(), array_values(), dan array_column().
Referensi #
Berkas Sumber
Berkas pendukung halaman ini dapat diunduh dan dijalankan langsung sesuai penjelasan di atas.
contoh.php
Unduh berkas<?php
/**
* contoh.php — rangkuman Chapter Array Destructuring.
* Jalankan: php contoh.php
*/
// 1. Destructuring array indexed.
$peringkat = ["Budi", "Siti", "Andi"];
[$juara1, $juara2, $juara3] = $peringkat;
echo "Emas: $juara1, Perak: $juara2, Perunggu: $juara3\n";
// 2. Destructuring array asosiatif + nested.
$pesanan = [
"kode" => "INV-2026-001",
"pembeli" => ["nama" => "Siti", "kota" => "Bandung"],
];
["kode" => $kode, "pembeli" => ["nama" => $namaPembeli]] = $pesanan;
echo "Pesanan $kode atas nama $namaPembeli\n";
// 3. Destructuring di dalam foreach.
$peserta = [
["nama" => "Budi", "email" => "[email protected]"],
["nama" => "Siti", "email" => "[email protected]"],
];
foreach ($peserta as ["nama" => $nama, "email" => $email]) {
echo "Peserta: $nama <$email>\n";
}
// 4. Menukar nilai dua variabel tanpa variabel bantu.
$satu = "kiri";
$dua = "kanan";
[$satu, $dua] = [$dua, $satu];
echo "Setelah tukar: satu = $satu, dua = $dua\n";