Fungsi `array_key_exists` pada PHP

Saat ngoding PHP, salah satu error yang paling sering saya temui pas masa-masa belajar adalah Undefined index. Penyebabnya sederhana: kita mengakses key yang ternyata tidak ada di array. Nah, obatnya sudah disediakan PHP dalam bentuk fungsi bawaan array_key_exists().
Fungsi ini tugasnya cuma satu tapi penting: memeriksa apakah sebuah key ada di dalam array, lalu menjawab true atau false.
Sintaks array_key_exists()
array_key_exists($key, $array)
Dua parameter yang dibutuhkan:
$key- kunci yang mau dicek (bisa string untuk array asosiatif, bisa angka untuk array numerik)$array- array yang mau diperiksa
Return-nya boolean: true kalau key ketemu, false kalau tidak.
Contoh penggunaan
1. Memeriksa key di array asosiatif
Kasus paling umum:
$student = array(
"nama" => "John Doe",
"usia" => 20,
"jurusan" => "Informatika"
);
if (array_key_exists("jurusan", $student)) {
echo "Kunci 'jurusan' ditemukan dalam array.";
} else {
echo "Kunci 'jurusan' tidak ditemukan dalam array.";
}
Output:
Kunci 'jurusan' ditemukan dalam array.
Perhatikan urutannya ya - key dulu, baru array. Saya sendiri dulu sering kebalik nulisnya, untung PHP langsung protes lewat warning.
2. Cek input user ($_GET / $_POST)
Ini kepakaiannya paling nyata. Data dari form atau URL itu datangnya tidak pasti - bisa saja key-nya tidak dikirim sama sekali:
if (array_key_exists("q", $_GET)) {
$keyword = $_GET["q"];
echo "Anda mencari: " . htmlspecialchars($keyword);
} else {
echo "Parameter pencarian belum diisi.";
}
Tanpa pengecekan seperti ini, membuka halaman tanpa parameter ?q=... langsung bikin warning Undefined array key. Jadi pola cek-dulu-baru-akses ini wajib hukumnya untuk input eksternal.
3. Key bernilai null tetap terdeteksi
Nah ini perilaku unik yang jarang diketahui:
$data = ["email" => null];
var_dump(array_key_exists("email", $data)); // bool(true)
var_dump(isset($data["email"])); // bool(false)
Array-nya memang punya key email, hanya saja isinya null. array_key_exists() bilang true karena key-nya benar-benar ada, sedangkan isset() bilang false karena dia menolak nilai null. Kalau definisi “ada” kalian adalah “key-nya eksis”, maka array_key_exists jawaban yang tepat.
array_key_exists vs isset
Karena pertanyaannya klasik, saya buat ringkasannya:
array_key_exists | isset | |
|---|---|---|
Nilai null | tetap true | false |
| Kecepatan | lebih lambat | lebih cepat |
| Bentuk | fungsi | language construct |
Praktisnya begini: kalau datanya bisa mengandung null (hasil query database misalnya), pakai array_key_exists(). Kalau array biasa dan yakin tidak ada null, isset() lebih ngebut dan hasilnya sama saja.
Tips penggunaan
Cek dulu sebelum akses. Biasakan pola ini supaya kode bebas warning undefined index, terutama untuk $_GET, $_POST, dan $_FILES yang isinya tidak bisa dijamin.
Langsung di kondisi if. Return-nya sudah boolean, jadi tinggal dipakai apa adanya tanpa perbandingan tambahan. Nulis if (array_key_exists(...) == true) itu redundan.
Banyak key sekaligus? Pakai loop.
$wajib = ["nama", "email", "pesan"];
foreach ($wajib as $field) {
if (!array_key_exists($field, $_POST)) {
echo "Field '$field' belum diisi.<br>";
}
}
Pola begini enak dipakai buat validasi form sederhana - daftar field wajib tinggal ditambah dikurangi tanpa menyentuh logika pengecekannya.
- Fungsi array_flip() pada PHP
- Fungsi array_search() pada PHP
- Fungsi array_values() pada PHP
- Fungsi array_merge() pada PHP
Kesimpulan
array_key_exists($key, $array) adalah cara baku PHP untuk mengecek keberadaan key dalam array sebelum nilainya diakses. Dua hal yang layak diingat: ia berbeda dari isset() karena tetap mengembalikan true untuk key bernilai null, dan ia paling berguna saat memvalidasi input eksternal seperti $_GET/$_POST yang key-nya tidak selalu lengkap. Kombinasi kecil ini saja sudah cukup buat mengusir warning Undefined index dari hidup kalian.
Pertanyaan yang Sering Diajukan
Apa fungsi array_key_exists pada PHP?
array_key_exists($key, $array) adalah fungsi bawaan PHP untuk memeriksa apakah sebuah kunci (key) ada dalam array. Ia mengembalikan true jika key ditemukan dan false jika tidak, tanpa perlu melihat nilai dari key tersebut.
Apa bedanya array_key_exists dengan isset()?
isset() mengembalikan false jika nilainya null, sedangkan array_key_exists tetap mengembalikan true meski nilainya null. Jadi untuk memeriksa keberadaan key secara murni, array_key_exists lebih akurat.
Kapan sebaiknya pakai array_key_exists?
Saat memeriksa data yang bisa bernilai null seperti hasil dari database atau input user ($_GET, $_POST), dan saat keberadaan key itu sendiri yang penting, bukan nilainya. Untuk array biasa tanpa null, isset() lebih cepat.
Apakah array_key_exists bisa memeriksa index array numerik?
Bisa. Array numerik pun punya index sebagai key, jadi array_key_exists(2, $arr) akan mengembalikan true jika elemen di index 2 ada.
Bagaimana memeriksa banyak key sekaligus?
Gunakan perulangan foreach terhadap daftar key yang ingin dicek, lalu panggil array_key_exists untuk masing-masing. Alternatif modern: gunakan array_intersect_key() untuk mencocokkan sekumpulan key dengan array.

