Sejauh ini setiap variabel yang kita buat hanya menyimpan satu nilai: satu nama, satu harga, satu status. Program nyata jarang sesederhana itu — aplikasi toko perlu menyimpan daftar puluhan nama produk, aplikasi ujian perlu menyimpan nilai belasan siswa, dan aplikasi pengatur tugas perlu mengingat daftar kegiatan harian. Membuat variabel terpisah seperti $produk1, $produk2, hingga $produk100 jelas bukan jalan yang masuk akal. Indexed array adalah struktur PHP yang menyelesaikan masalah ini: satu variabel yang menyimpan banyak nilai berurutan dengan penomoran otomatis. Kita sudah mengenal array sebagai tipe data pada Chapter Arrays di Section Tipe Data dan Type System
; sekarang kita memakainya sebagai alat kerja sehari-hari.
Konsep Indexed Array #
Array PHP menyimpan data sebagai daftar pasangan kunci (key) dan nilai (value). Pada indexed array, kunci tersebut berupa bilangan bulat berurutan yang diberikan PHP secara otomatis: elemen pertama mendapat indeks 0, elemen kedua 1, dan seterusnya. Bayangkan deretan kotak bernomor — angka pada setiap kotak adalah alamat tempat nilai disimpan, dan kita mengambil isinya cukup dengan menyebut nomornya. Setiap nilai di dalam array disebut elemen, dan PHP selalu mengingat urutan penyisipan elemen sehingga array punya urutan yang pasti. Penomoran otomatis inilah yang membuat indexed array cocok untuk data yang memang berbentuk daftar: daftar nama, daftar nilai, atau daftar pesan.
Membuat Array dengan [] dan array() #
PHP menyediakan dua sintaks untuk membuat array: literal [...] dan bentuk historis array(...). Keduanya menghasilkan struktur yang persis sama — literal kurung siku hadir sejak PHP 5.4 dan menjadi gaya modern yang lebih ringkas, sedangkan array(...) masih sering Anda temui pada kode warisan lama. Mari kita lihat keduanya beraksi:
<?php
$buah = ["Apel", "Jeruk", "Mangga"];
$bulan = array("Januari", "Februari", "Maret");
echo $buah[0] . "\n";
echo $buah[2] . "\n";
echo $bulan[1] . "\n";Output yang Dihasilkan:
Apel
Mangga
FebruariMari kita telaah baris-baris kode di atas:
- Baris 2 (
$buah = [...]): membuat array dengan tiga string; PHP otomatis menomori elemennya menjadi0,1, dan2. - Baris 3 (
$bulan = array(...)): bentuk lama dengan hasil identik —$bulanberisi tiga nama bulan dengan penomoran yang sama. - Baris 5 (
echo $buah[0]): membaca elemen bernomor0, yaitu"Apel". - Baris 6 (
echo $buah[2]): membaca elemen bernomor2— perhatikan bahwa ini adalah elemen ketiga, karena penomoran dimulai dari nol.
Untuk melihat struktur internal sebuah array — seluruh pasangan indeks dan nilainya — fungsi print_r() adalah alat tercepat:
<?php
$warna = ["Merah", "Hijau", "Biru"];
print_r($warna);Output yang Dihasilkan:
Array
(
[0] => Merah
[1] => Hijau
[2] => Biru
)Output-nya menampilkan satu baris per elemen dengan format [indeks] => nilai. Terlihat jelas bahwa "Merah" tersimpan di indeks 0, "Hijau" di indeks 1, dan "Biru" di indeks 2 — penomoran otomatis PHP selalu berawal dari nol.
Indeks Dimulai dari Nol #
Aturan penomoran dari nol (zero-based indexing) adalah sumber kesalahan klasik pemula. Elemen pertama ada di indeks 0, sehingga pada array berisi n elemen, elemen terakhirnya berada di indeks n - 1, bukan n. Mengakses indeks yang tidak ada tidak membuat program berhenti — PHP hanya memicu peringatan lalu melanjutkan eksekusi dengan nilai null:
<?php
$buah = ["Apel", "Jeruk"];
echo $buah[5] . "\n";Output yang Dihasilkan:
Warning: Undefined array key 5 in /home/z/my-project/php-course/content/php/arrays-dan-collections/indexed-arrays/.verify_tmp.php on line 3Dua hal terjadi di sini. Pertama, PHP mencetak Warning: Undefined array key 5 karena indeks 5 tidak pernah diisi pada array $buah yang hanya memiliki indeks 0 dan 1. Kedua, echo tetap dijalankan: nilai null hasil pembacaan gagal tersebut dikonversi menjadi string kosong, lalu digabung dengan "\n" sehingga tercetak satu baris kosong. Program berlanjut normal setelahnya karena warning bukan error fatal.
Indeks otomatis juga bekerja saat kita mencampur elemen bernomor eksplisit dengan elemen polos. Ketika sebuah nilai ditulis tanpa kunci, PHP memberinya indeks satu tingkat di atas integer terbesar yang sudah dipakai:
<?php
$kode = [10 => "Sepuluh", "Sebelas", "Dua Belas"];
echo $kode[10] . "\n";
echo $kode[11] . "\n";
echo $kode[12] . "\n";Output yang Dihasilkan:
Sepuluh
Sebelas
Dua BelasElemen pertama diberi kunci eksplisit 10, sehingga "Sebelas" otomatis mendapat indeks 11 dan "Dua Belas" mendapat 12. Perilaku ini berguna ketika kita perlu memulai penomoran dari angka tertentu, tetapi umumnya cukup membiarkan PHP menomori dari nol.
Menghitung Jumlah Elemen dengan count #
Fungsi count() mengembalikan jumlah elemen sebuah array — informasi yang hampir selalu kita butuhkan sebelum memproses daftar. Dari jumlah elemen tersebut kita bisa menghitung indeks elemen terakhir, yaitu count($array) - 1:
<?php
$buah = ["Apel", "Jeruk", "Mangga", "Pisang"];
$jumlah = count($buah);
echo "Jumlah elemen: $jumlah\n";
echo "Indeks terakhir: " . ($jumlah - 1) . "\n";
echo "Elemen terakhir: " . $buah[$jumlah - 1] . "\n";Output yang Dihasilkan:
Jumlah elemen: 4
Indeks terakhir: 3
Elemen terakhir: PisangEkspresi $buah[$jumlah - 1] membaca indeks 3 — elemen keempat sekaligus yang terakhir. Tanda kurung di sekitar $jumlah - 1 wajib ada agar pengurangan dikerjakan lebih dulu sebelum hasilnya dipakai sebagai indeks.
Menambah Elemen Baru di Akhir Array #
Array tidak harus lengkap sejak dibuat — kita bisa menumbuhkannya seiring program berjalan. Menulis $array[] = nilai menambahkan elemen baru di akhir array dan PHP otomatis memberinya indeks integer berikutnya:
<?php
$tugas = ["Belajar PHP", "Membaca dokumentasi"];
$tugas[] = "Mengerjakan latihan";
echo "Jumlah tugas: " . count($tugas) . "\n";
echo "Tugas ketiga: " . $tugas[2] . "\n";Output yang Dihasilkan:
Jumlah tugas: 3
Tugas ketiga: Mengerjakan latihanArray $tugas mulai dengan dua elemen bernomor 0 dan 1. Penugasan $tugas[] = "Mengerjakan latihan" menempelkan elemen baru di posisi akhir dengan indeks 2 — terbukti dari count() yang kini mengembalikan 3 dan pembacaan $tugas[2] yang berhasil. Pola tambah-di-akhir seperti ini adalah cara paling umum membangun daftar secara bertahap, misalnya saat mengumpulkan hasil dari sebuah perulangan.
Berkas contoh.php pada bagian bawah halaman merangkum seluruh contoh di atas dalam satu program utuh yang dapat Anda unduh dan jalankan langsung.
Ringkasan #
Indexed array menyimpan daftar nilai dalam satu variabel dengan kunci integer otomatis yang dimulai dari nol. Kita membuatnya dengan literal [] atau array(), membaca dan menulis elemen melalui indeksnya, menghitung jumlah elemen dengan count(), dan menumbuhkan array dengan $array[] = nilai. Angka berjalan otomatis memang praktis, tetapi sering kali label yang bermakna — nama, harga, stok — jauh lebih mudah dibaca daripada angka. Kebutuhan itulah yang dijawab oleh associative array pada Chapter berikutnya.
Referensi #
Berkas Sumber
Berkas pendukung halaman ini dapat diunduh dan dijalankan langsung sesuai penjelasan di atas.
contoh.php
Unduh berkas<?php
// Contoh 1: membuat array dengan [] dan array()
$buah = ["Apel", "Jeruk", "Mangga"];
$bulan = array("Januari", "Februari", "Maret");
echo $buah[0] . "\n";
echo $buah[2] . "\n";
echo $bulan[1] . "\n";
// Contoh 2: melihat pasangan indeks => nilai dengan print_r
$warna = ["Merah", "Hijau", "Biru"];
print_r($warna);
// Contoh 3: indeks otomatis setelah kunci eksplisit
$kode = [10 => "Sepuluh", "Sebelas", "Dua Belas"];
echo $kode[10] . "\n";
echo $kode[11] . "\n";
echo $kode[12] . "\n";
// Contoh 4: count dan indeks elemen terakhir
$buah = ["Apel", "Jeruk", "Mangga", "Pisang"];
$jumlah = count($buah);
echo "Jumlah elemen: $jumlah\n";
echo "Indeks terakhir: " . ($jumlah - 1) . "\n";
echo "Elemen terakhir: " . $buah[$jumlah - 1] . "\n";
// Contoh 5: menambah elemen baru di akhir array
$tugas = ["Belajar PHP", "Membaca dokumentasi"];
$tugas[] = "Mengerjakan latihan";
echo "Jumlah tugas: " . count($tugas) . "\n";
echo "Tugas ketiga: " . $tugas[2] . "\n";