Cara Memeriksa Apakah Nilai Ada dalam Array di PHP

Bayangkan Anda menjadi petugas keamanan di sebuah acara. Anda memegang daftar tamu undangan, dan setiap kali ada orang datang, Anda mengecek apakah namanya ada di daftar. Dalam PHP, pekerjaan “mengecek apakah sebuah nilai ada di dalam daftar” ini dilakukan dengan in_array(). Artikel ini membahas cara memeriksa nilai ada dalam array di PHP.

Fungsi in_array()

<?php
$buah = ["Apel", "Mangga", "Jeruk"];
if (in_array("Mangga", $buah)) {
    echo "Mangga tersedia";
}
?>

Contoh Kasus: Validasi Hak Akses Halaman

<?php
$peran_diizinkan = ["admin", "editor"];
$peran_user = $_SESSION["role"] ?? "";
if (in_array($peran_user, $peran_diizinkan)) {
    echo "Selamat datang di halaman kelola artikel";
} else {
    http_response_code(403);
    exit("Akses ditolak");
}
?>

Menambah peran baru cukup dengan menambahkan satu elemen ke array, tanpa mengubah logika if.

Contoh Kasus: Mencegah Produk Ganda di Keranjang

<?php
$keranjang = [12, 45, 8];
$id_produk = 45;
if (in_array($id_produk, $keranjang)) {
    echo "Produk sudah ada di keranjang";
} else {
    $keranjang[] = $id_produk;
}
?>

Perbandingan Ketat (Tipe Data)

Secara bawaan in_array() membandingkan longgar sehingga "1" dianggap sama dengan 1, yang bisa menimbulkan bug halus. Gunakan parameter ketiga true saat tipe penting:

<?php
$data = ["1", 2, 3];
var_dump(in_array(1, $data));       // true (longgar)
var_dump(in_array(1, $data, true)); // false (ketat)
?>

Tips Performa untuk Data Besar

Untuk pengecekan berulang pada ribuan data, isset() pada array yang sudah di-array_flip() jauh lebih cepat:

<?php
$lookup = array_flip($daftar_besar);
if (isset($lookup[$nilai])) { /* ditemukan, sangat cepat */ }
?>

Kesimpulan

Gunakan in_array() untuk memeriksa keberadaan nilai. Tambahkan true saat tipe data penting, dan pertimbangkan array_flip() + isset() untuk data besar demi performa. Jangan tertukar dengan array_key_exists() yang mengecek kunci.

Referensi: untuk penjelasan lebih mendalam, kunjungi dokumentasi resmi PHP (php.net).

Baca Juga

Ali Akbar

Software Developer yang fokus mengembangkan aplikasi berbasis Web dan Desktop. Senang mempelajari teknologi baru terutama di bidang web design dan web development.

View all posts by Ali Akbar →

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *