Array pada contoh-contoh sebelumnya terlihat seperti daftar beku: ditulis sekali, lalu hanya dibaca. Aplikasi nyata justru sebaliknya — keranjang belanja bertambah setiap kali pengguna men klik produk, stok berkurang setiap kali terjadi penjualan, dan daftar tugas menyusut saat pekerjaan selesai. Untuk semua itu kita perlu tiga kemampuan dasar manipulasi: menambah elemen, mengubah nilai, dan menghapus elemen. Pada Chapter ini kita akan mempelajari ketiganya beserta empat fungsi bawaan PHP untuk pola tumpukan dan antrean, dan satu perilaku penting yang sering mengejutkan: lubang indeks yang ditinggalkan operasi hapus.
Menambah Elemen Baru #
Tiga bentuk penugasan menambahkan elemen ke array, dan semuanya sudah pernah kita lihat sekilas — sekarang kita pakai berdampingan agar bedanya tajam:
<?php
$buah = ["Apel"];
$buah[] = "Jeruk";
$buah["favorit"] = "Mangga";
$buah[10] = "Nanas";
print_r($buah);
echo "Jumlah elemen: " . count($buah) . "\n";Output yang Dihasilkan:
Array
(
[0] => Apel
[1] => Jeruk
[favorit] => Mangga
[10] => Nanas
)
Jumlah elemen: 4Mari kita bedah tiga penugasan di atas:
$buah[] = "Jeruk"menambah di akhir dengan indeks integer otomatis — indeks tertinggi yang telah terpakai ditambah satu, hasilnya[1] => Jeruk.$buah["favorit"] = "Mangga"menambah dengan kunci string pilihan kita sendiri.$buah[10] = "Nanas"menambah dengan kunci integer eksplisit — tidak masalah meski angka itu jauh melompat dari indeks sebelumnya.
Hasil akhirnya: array berisi empat elemen dengan campuran tiga jenis kunci, dan count() mengonfirmasi jumlahnya. Satu aturan penting mengikuti bentuk kedua dan ketiga — jika kunci yang kita tulis sudah ada di dalam array, penugasan tidak menambah elemen baru, melainkan menimpa nilai lama.
Mengubah Nilai Elemen #
Mengubah isi array memakai operator penugasan yang sama seperti pada variabel biasa; yang menentukan efeknya adalah keberadaan kunci:
<?php
$stok = [
"Kopi Gayo" => 12,
"Teh Melati" => 8,
];
$stok["Teh Melati"] = 15;
$stok["Gula Aren"] = 20;
echo "Stok Teh Melati: " . $stok["Teh Melati"] . "\n";
echo "Stok Gula Aren: " . $stok["Gula Aren"] . "\n";
echo "Jumlah produk: " . count($stok) . "\n";Output yang Dihasilkan:
Stok Teh Melati: 15
Stok Gula Aren: 20
Jumlah produk: 3Kunci "Teh Melati" sudah ada, sehingga penugasan pertama memperbarui nilainya dari 8 menjadi 15 — jumlah elemen tidak bertambah. Kunci "Gula Aren" belum ada, sehingga penugasan kedua justru menambah elemen baru; count() yang naik dari 2 ke 3 membuktikannya. Perilaku tambah-atau-timpa ini membuat satu baris penugasan berfungsi ganda, tetapi juga menuntut kehati-hatian: salah ketik kunci seperti "teh melati" akan diam-diam menambah elemen baru alih-alih memperbarui stok yang dimaksud.
Menghapus Elemen dengan unset #
Penghapusan elemen dilakukan oleh unset() — sebuah language construct, bukan fungsi biasa, sehingga ditulis tanpa perlu khawatir nilai kembalinya karena tidak ada:
<?php
$buah = ["Apel", "Jeruk", "Mangga"];
unset($buah[1]);
var_dump(isset($buah[1]));
echo "Jumlah elemen: " . count($buah) . "\n";
echo $buah[0] . "\n";
echo $buah[2] . "\n";Output yang Dihasilkan:
bool(false)
Jumlah elemen: 2
Apel
Manggaunset($buah[1]) menghapus pasangan kunci-nilai 1 => "Jeruk" secara menyeluruh — bukan sekadar mengosongkan nilainya. Buktinya: isset($buah[1]) kini mengembalikan bool(false), count() turun menjadi 2, sementara elemen lain tidak tersentuh — "Apel" dan "Mangga" masih bisa dibaca di tempatnya masing-masing. unset() juga menerima beberapa argumen sekaligus, misalnya unset($buah[0], $buah[2]), dan tanpa argumen indeks — unset($buah) — ia menghapus variabel array itu sendiri.
Lubang Indeks dan Reindexing dengan array_values #
Inilah perilaku yang paling sering mengejutkan: unset() tidak menggeser elemen setelahnya. Kunci yang tersisa tetap mempertahankan nomornya, sehingga array bisa mengandung lubang:
<?php
$warna = ["Merah", "Hijau", "Biru", "Kuning"];
unset($warna[1]);
echo "Setelah unset:\n";
print_r($warna);
$warna = array_values($warna);
echo "Setelah array_values:\n";
print_r($warna);Output yang Dihasilkan:
Setelah unset:
Array
(
[0] => Merah
[2] => Biru
[3] => Kuning
)
Setelah array_values:
Array
(
[0] => Merah
[1] => Biru
[2] => Kuning
)Setelah unset($warna[1]), output pertama menunjukkan indeks 0, 2, 3 — nomor 1 hilang tanpa digantikan, dan elemen "Biru" tetap di indeks 2. Fungsi array_values() kemudian membuat array baru berisi nilai-nilai yang tersisa dengan penomoran segar dari nol: "Merah" di 0, "Biru" di 1, "Kuning" di 2. Menimpa $warna dengan hasilnya menuntaskan proses reindexing.
Fungsi Tumpukan dan Antrean #
PHP menyediakan empat fungsi bawaan untuk dua pola klasik pengelolaan koleksi. array_push() dan array_pop() bekerja di ujung akhir array — pola tumpukan (stack, LIFO: terakhir masuk, pertama keluar):
<?php
$tumpukan = ["Buku A", "Buku B"];
array_push($tumpukan, "Buku C", "Buku D");
echo "Jumlah buku: " . count($tumpukan) . "\n";
$terambil = array_pop($tumpukan);
echo "Buku terambil: $terambil\n";
echo "Sisa buku: " . count($tumpukan) . "\n";Output yang Dihasilkan:
Jumlah buku: 4
Buku terambil: Buku D
Sisa buku: 3array_push() menerima banyak nilai sekaligus — kedua buku baru menempel di akhir, menaikkan jumlah menjadi 4. array_pop() melepas elemen paling akhir sekaligus mengembalikannya, sehingga "Buku D" — yang terakhir ditambahkan — menjadi yang pertama diambil. Sementara itu, array_shift() dan array_unshift() bekerja di ujung awal array — pola antrean (queue, FIFO: pertama masuk, pertama keluar):
<?php
$antrian = ["Andi", "Budi", "Citra"];
$dilayani = array_shift($antrian);
echo "Dilayani: $dilayani\n";
print_r($antrian);
array_unshift($antrian, "Zaki");
echo "Setelah array_unshift:\n";
print_r($antrian);Output yang Dihasilkan:
Dilayani: Andi
Array
(
[0] => Budi
[1] => Citra
)
Setelah array_unshift:
Array
(
[0] => Zaki
[1] => Budi
[2] => Citra
)array_shift() melepas "Andi" dari depan dan mengembalikannya — orang yang paling awal mengantri kini dilayani. Perhatikan print_r() setelahnya: "Budi" dan "Citra" telah digeser ke indeks 0 dan 1, karena operasi di ujung depan selalu menomori ulang seluruh kunci integer. array_unshift() kemudian menyisipkan "Zaki" di posisi paling depan. Berikut perbandingan lengkap keempatnya:
| Fungsi | Bekerja di | Efek |
|---|---|---|
array_push() | Ujung akhir | Menambah satu atau beberapa elemen |
array_pop() | Ujung akhir | Menghapus elemen terakhir dan mengembalikannya |
array_unshift() | Ujung awal | Menambah satu atau beberapa elemen |
array_shift() | Ujung awal | Menghapus elemen pertama dan mengembalikannya; kunci integer dinomori ulang |
Berkas contoh.php pada bagian bawah halaman merangkum seluruh contoh di atas dalam satu program utuh yang dapat Anda unduh dan jalankan langsung.
Ringkasan #
Penugasan $array[] = nilai menambah elemen di akhir, $array["kunci"] = nilai menambah atau menimpa tergantung keberadaan kunci, dan unset() menghapus pasangan kunci-nilai beserta kuncinya. Penghapusan meninggalkan lubang indeks yang dirapikan array_values(), sementara array_push(), array_pop(), array_shift(), dan array_unshift() mengemas pola tumpukan dan antrean dalam satu panggilan. Dengan kemampuan mengubah isi array secara penuh, kita siap melangkah ke teknik modern berikutnya: menyusun array baru dengan sangat ringkas lewat array unpacking.
Referensi #
- unset — Dokumentasi Resmi PHP
- array_push — Dokumentasi Resmi PHP
- array_shift — Dokumentasi Resmi PHP
- array_values — Dokumentasi Resmi PHP
Berkas Sumber
Berkas pendukung halaman ini dapat diunduh dan dijalankan langsung sesuai penjelasan di atas.
contoh.php
Unduh berkas<?php
// Contoh 1: menambah elemen dengan berbagai bentuk kunci
$buah = ["Apel"];
$buah[] = "Jeruk";
$buah["favorit"] = "Mangga";
$buah[10] = "Nanas";
print_r($buah);
echo "Jumlah elemen: " . count($buah) . "\n";
// Contoh 2: mengubah nilai yang sudah ada
$stok = [
"Kopi Gayo" => 12,
"Teh Melati" => 8,
];
$stok["Teh Melati"] = 15;
$stok["Gula Aren"] = 20;
echo "Stok Teh Melati: " . $stok["Teh Melati"] . "\n";
echo "Stok Gula Aren: " . $stok["Gula Aren"] . "\n";
echo "Jumlah produk: " . count($stok) . "\n";
// Contoh 3: menghapus elemen dengan unset
$buah = ["Apel", "Jeruk", "Mangga"];
unset($buah[1]);
var_dump(isset($buah[1]));
echo "Jumlah elemen: " . count($buah) . "\n";
echo $buah[0] . "\n";
echo $buah[2] . "\n";
// Contoh 4: lubang indeks dan perbaikan array_values
$warna = ["Merah", "Hijau", "Biru", "Kuning"];
unset($warna[1]);
echo "Setelah unset:\n";
print_r($warna);
$warna = array_values($warna);
echo "Setelah array_values:\n";
print_r($warna);
// Contoh 5: pola tumpukan dengan array_push dan array_pop
$tumpukan = ["Buku A", "Buku B"];
array_push($tumpukan, "Buku C", "Buku D");
echo "Jumlah buku: " . count($tumpukan) . "\n";
$terambil = array_pop($tumpukan);
echo "Buku terambil: $terambil\n";
echo "Sisa buku: " . count($tumpukan) . "\n";
// Contoh 6: pola antrean dengan array_shift dan array_unshift
$antrian = ["Andi", "Budi", "Citra"];
$dilayani = array_shift($antrian);
echo "Dilayani: $dilayani\n";
print_r($antrian);
array_unshift($antrian, "Zaki");
echo "Setelah array_unshift:\n";
print_r($antrian);