Array PHP menyimpan list nilai di bawah key. Buat array dengan kurung siku, $fruits = ['apple', 'banana', 'cherry'];, lalu baca elemennya dengan indeks, $fruits[0]. Indeks dimulai dari 0, dan count($fruits) memberi jumlah elemennya.
Setiap array PHP adalah map yang berurutan: setiap nilai berada di sebuah key. Kalau kamu tidak memilih key-nya, PHP menomorinya 0, 1, 2... dan kamu mendapatkan indexed array. Kalau kamu memilihnya sendiri (['name' => 'Ada']), kamu mendapatkan array asosiatif. Keduanya bertipe array yang sama.
Membuat array
Kurung siku adalah sintaks yang biasa dipakai. array() adalah penulisan lama dan menghasilkan hal yang persis sama. range() membuat list angka atau huruf, dan array_fill() mengulang satu nilai.
Array PHP bisa menampung nilai dengan tipe berbeda sekaligus, termasuk array lain. Array berisi array disebut array multidimensi, cara yang biasa dipakai untuk menyimpan baris-baris data.
Mengambil elemen pertama dan terakhir
PHP tidak punya indeks negatif. $arr[-1] tidak berarti "yang terakhir": ia mencari key bernama -1, dan kalau tidak ada, PHP mencetak Warning: Undefined array key -1. Pakai array_key_first() dan array_key_last(), yang juga bekerja saat key-nya tidak dimulai dari 0.
end($queue) juga mengembalikan nilai terakhir, tetapi efek sampingnya memindahkan pointer internal array, jadi versi yang memakai key adalah pilihan yang lebih jelas.
Mencetak array
echo $arr tidak bekerja: yang tercetak hanya kata Array disertai warning. Pilih output yang sesuai kebutuhan:
print_r($arr)untuk tampilan yang mudah dibaca saat debugging.var_dump($arr)untuk melihat juga tipe dan panjang setiap nilai.implode(', ', $arr)untuk mengubah nilainya menjadi satu string untuk ditampilkan.json_encode($arr)untuk mengirim array ke JavaScript atau API.
Halaman print_r dan var_dump membahas pilihan formatnya, termasuk mencetak array di dalam HTML.
Menelusuri array dengan loop
foreach adalah loop yang dibuat untuk array: ia memberimu setiap nilai, dan juga key-nya kalau kamu minta. Loop for dengan indeks juga bisa dipakai untuk indexed array yang key-nya berurutan dari 0 tanpa celah.
Array disalin, bukan dibagi
Menyimpan array ke variabel lain, atau mengirimnya ke fungsi, menghasilkan salinan. Mengubah salinannya tidak menyentuh aslinya. Tambahkan & pada parameter saat sebuah fungsi perlu mengubah array milik pemanggil.
Fungsi array berdasarkan kebutuhan
PHP punya lebih dari 70 fungsi array. Ini yang paling sering kamu pakai, masing-masing punya halaman sendiri:
| Kebutuhan | Fungsi |
|---|---|
| Menambah di akhir | array_push() atau $arr[] = |
| Jumlah elemen | count() |
| Cek apakah nilai ada | in_array() |
| Mencari key dari sebuah nilai | array_search() |
| Cek apakah key ada | array_key_exists() |
| Menggabungkan array | array_merge() |
| Mengubah setiap nilai | array_map() |
| Menyimpan sebagian nilai | array_filter() |
| Mengurutkan | sort(), usort(), dan sejenisnya |
| Menghapus elemen | unset(), array_splice() |
| Mengambil sebagian | array_slice() |
| Menghapus duplikat | array_unique() |
| String ke array dan sebaliknya | explode(), implode() |
Key yang diam-diam menyatu
Key array berupa integer atau string, dan PHP mengonversi sebagian key untukmu. String yang terlihat seperti bilangan bulat desimal, misalnya "1", menjadi integer 1, jadi $a["1"] dan $a[1] adalah slot yang sama. "01" dan "1.5" tetap string. Karena itulah array yang dibuat dari input formulir atau CSV bisa berisi elemen lebih sedikit daripada yang kamu kira.
Pertanyaan yang sering diajukan
Bagaimana cara membuat array di PHP?
Pakai kurung siku: $colors = ['red', 'green', 'blue'];. Array kosong ditulis $items = [];. Sintaks lama array('red', 'green') melakukan hal yang sama dan masih bisa dipakai.
Bagaimana cara mencetak array di PHP?
echo tidak bisa mencetak array (yang tercetak hanya kata Array disertai warning). Pakai print_r($arr) untuk tampilan yang mudah dibaca, var_dump($arr) untuk melihat tipenya juga, atau echo implode(', ', $arr) untuk mencetak nilainya dalam satu baris.
Bagaimana cara mengambil elemen terakhir array di PHP?
Pakai $arr[array_key_last($arr)] (PHP 7.3+) atau end($arr). PHP tidak punya indeks negatif: $arr[-1] mencari key bernama -1, yang biasanya tidak ada.
Apakah array PHP dikirim sebagai nilai atau referensi?
Sebagai nilai. $b = $a; memberi $b salinannya sendiri, jadi mengubah $b tidak mengubah $a. Untuk mengubah array milik pemanggil di dalam fungsi, deklarasikan parameternya sebagai referensi: function add(array &$list).
Apa bedanya indexed array dan array asosiatif di PHP?
Keduanya tipe yang sama. Indexed array punya key integer 0, 1, 2... yang diberikan PHP untukmu; array asosiatif memakai key yang kamu pilih sendiri, biasanya string seperti 'name'. Satu array bahkan bisa mencampur keduanya.