Array asosiatif menyimpan setiap nilai di bawah key yang kamu pilih, ditulis sebagai key => value: $user = ['name' => 'Ada', 'age' => 36];. Baca nilainya dengan $user['name'], lalu tambah atau ubah nilai dengan mengisinya ke key tersebut: $user['email'] = 'ada@example.com';.
Di bahasa lain, struktur yang sama disebut dictionary, map, atau hash. Di PHP, ini hanyalah array biasa yang key-nya berupa string, bukan 0, 1, 2.
Menambah, mengubah, dan menghapus pasangan
Mengisi key yang belum ada akan menambahkannya di akhir. Mengisi key yang sudah ada akan mengganti nilainya dan mempertahankan posisinya. unset() menghapus sebuah pasangan.
array_push() tidak membantu di sini: fungsi itu hanya bisa menambahkan nilai dengan key numerik. Untuk menambah beberapa pasangan sekaligus, pakai array_merge($stock, $more), yang membuat nilai baru menang, atau $stock + $more, yang membuat key yang sudah ada tetap memakai nilainya; halaman array_merge membandingkan keduanya.
Menelusuri key dan nilai dengan loop
foreach ($array as $key => $value) menelusuri pasangan-pasangannya sesuai urutan penambahan. Hilangkan $key => kalau kamu hanya butuh nilainya.
Mengambil semua key atau semua nilai
array_keys() mengembalikan key sebagai list biasa dan array_values() mengembalikan nilainya, keduanya diindeks ulang mulai dari 0. Beri array_keys() argumen kedua, dan fungsi itu hanya mengembalikan key yang menyimpan nilai tersebut. Begitulah cara mencari semua key untuk sebuah nilai.
Untuk satu key, array_search() mengembalikan kecocokan pertama, atau false kalau tidak ada. Halaman array_search menjelaskan kenapa hasilnya harus dibandingkan dengan !== false.
Memeriksa apakah key ada
isset($arr['key']) adalah pengecekan yang biasa dan yang paling cepat, tetapi hasilnya false saat key-nya ada dan berisi null. array_key_exists('key', $arr) mengembalikan true pada kasus itu. Untuk membaca dengan nilai cadangan, operator ?? melakukan keduanya sekaligus.
Mengurutkan berdasarkan key atau nilai
ksort() mengurutkan berdasarkan key dan asort() berdasarkan nilai, keduanya menjaga setiap key tetap menempel pada nilainya. krsort() dan arsort() mengurutkan secara terbalik. Jangan pakai sort() pada array asosiatif: fungsi itu membuang key-nya dan menomori ulang mulai dari 0.
Semua fungsi ini mengurutkan secara langsung dan mengembalikan true, jadi $sorted = ksort($arr) memberimu true, bukan array. Urutan khusus memakai uasort() dan uksort().
Membalik, menghitung, dan mengubah ke JSON
Beberapa kode satu baris sering muncul saat bekerja dengan data key-value: array_flip() menukar key dan nilai, array_count_values() menghitung seberapa sering setiap nilai muncul, dan json_encode() mengubah array menjadi objek JSON.
Kesalahan umum: membaca key yang tidak ada
Membaca key yang tidak ada mengembalikan null, tetapi PHP milikmu sendiri juga mencetak warning:
<?php
$user = ['name' => 'Ada'];
echo $user['phone'];
Warning: Undefined array key "phone" in /var/www/html/index.php on line 3
Beri nilai bawaan saat membaca dengan ??, yang tidak pernah memunculkan warning, atau periksa dulu dengan isset() saat kasus key tidak ada butuh cabang sendiri.
Di dalam string berkutip ganda, bungkus pencariannya dengan kurung kurawal, "{$user['email']}". Tanpa kurung kurawal, PHP hanya menerima bentuk tanpa kutip "$user[email]", yang mudah salah tulis.
Pertanyaan yang sering diajukan
Bagaimana cara membuat array asosiatif di PHP?
Tulis setiap pasangan sebagai key => value di dalam kurung siku: $prices = ['apple' => 1.2, 'pear' => 0.9];. Baca nilainya dengan $prices['apple'].
Bagaimana cara mengurutkan array asosiatif berdasarkan key di PHP?
Panggil ksort($arr); untuk urutan A sampai Z atau krsort($arr); untuk Z sampai A. Keduanya mengurutkan secara langsung, menjaga setiap nilai tetap bersama key-nya, dan mengembalikan true, bukan array yang sudah diurutkan.
Bagaimana cara menelusuri array asosiatif dengan loop di PHP?
Pakai foreach dengan dua variabel: foreach ($prices as $fruit => $price) { echo "$fruit: $price\n"; }. Pasangan-pasangannya keluar sesuai urutan saat ditambahkan.
Bagaimana cara mengambil semua key dari array asosiatif?
array_keys($arr) mengembalikan key-nya sebagai indexed array, dan array_values($arr) mengembalikan nilainya. array_keys($arr, $value) hanya mengembalikan key yang nilainya sama dengan $value.
Apakah array asosiatif PHP menjaga urutan penambahan?
Ya. Array PHP adalah map yang berurutan, jadi foreach, print_r, dan json_encode semuanya melihat pasangan-pasangan itu sesuai urutan kamu menambahkannya, sampai kamu mengurutkan array dengan ksort(), asort(), atau fungsi serupa.