Belajar Web Programming PHP, HTML, MySQL dan Tutorial

Cari Data Array Dengan Array_search Pada PHP

Pemrograman pada PHP tidak terlepas dari variabel yang digunakan di dalamnya. Dalam tutorial kali ini kita mempelajari bagaimana penggunaan array untuk membuat sebuah aplikasi sederhana. Array dapat digunakan untuk menampung data statis yang jumlahnya kecil sehingga pemrosesan menjadi lebih cepat.


Misalnya kita mempunyai beberapa data dengan kode sebagai berikut:
<?php
//pencarian array

$data[1] = "Amir";
$data[2] = "Ferry";
$data[3] = "Johan";
$data[4] = "Siska";
$data[5] = "Velly";

//cari data
$cari = array_search("Johan", $data);
echo "Hasil pencarian di index : ".$cari;
?>

Hasilnya adalah :
Hasil pencarian di index : 3

Jadi fungsi array_search() menghasilkan nilai key dari array yang ditemukan tersebut. Untuk parameter array_search() sendiri adalah sebagai berikut:
array_search(needle, haystack, strict)

needle = value/string yang akan dicari pada array (case sensitive)
haystack = variable array yang akan dicari
strict = parameter boolean (True/False) digunakan untuk mencari data dengan tipe yang identik sama dengan value/string yang dicari

Cukup mudah bukan? Bagaimana jika ternyata ada data yang kembar, misalnya nama yang sama. Jika seperti itu maka kita perlu melakukan pengecekan secara keseluruhan dengan menggunakan fungsi while()

Berikut kodenya:
<?php
//pencarian array

$data[1] = "Amir";
$data[2] = "Ferry";
$data[3] = "Johan";
$data[4] = "Siska";
$data[5] = "Johan";

while (($cari = array_search("Johan", $data)) != NULL) 
{ 
echo "Hasil pencarian : ".$cari;
echo "<br>";

//setelah ketemu kita unset dulu agar tidak terjadi infinite loop
unset($data[$cari]); 
} 
?>

Hasilnya adalah sebagai berikut:
Hasil pencarian : 3
Hasil pencarian : 5

fungsi unset() digunakan untuk membatalkan/menghapus suatu variabel dimana dalam perulangan sangat diperlukan agar tidak terjadi infinite loop atau perulangan yang tak terbatas. Jadi apabila value telah ketemu maka array tersebut di unset agar array_search() dapat melakukan penelusuran kembali.

Jika telah mengerti maka kita dapat membuatnya lebih baik lagi dimana kita membuat filter case sensitive Mengapa? tentu kita tidak ingin membatasi user dengan ketentuan yang ribetkan. jadi kita buar program mengerti bahwa user ingin mencari nama tersebut walaupun menggunakan huruf besar atau kecil. Dengan cara seperti apa? tentu bisa dilakukan dengan fungsi array_map() dan strtolower() dimana kita menjadikan value array dan value yang dicari menjadi huruf kecil. Hmm rumit? tidak juga mari kita coba ^^

Sebelumnya kita mempelajari dulu pencarian data pada array 2 demensi ya :)
Sourcecode:
<?php
//pencarian array

$data[1]['nama'] = "Amir";
$data[1]['hp'] = "0812345678900";
$data[2]['nama'] = "Ferry";
$data[2]['hp'] = "0822345678901";
$data[3]['nama'] = "Johan";
$data[3]['hp'] = "0832345678902";
$data[4]['nama'] = "Siska";
$data[4]['hp'] = "0842345678903";
$data[5]['nama']= "Johan";
$data[5]['hp'] = "0852345678904";

$kolom = array_column($data, 'nama');
while (($cari = array_search("Johan", $kolom)) != NULL) 
{ 
echo "Hasil pencarian : ".$cari;
echo "<br>";

//setelah ketemu kita unset dulu agar tidak terjadi infinite loop
unset($kolom[$cari]); 
} 
?>

Hasilnya :
Hasil pencarian : 2
Hasil pencarian : 4

Wah kok index 2 dan 4? padahalkan nama johan adanya di index 3 dan 5? jangan bingung dulu ya teman. karena ini array 2 demensi dan kita menggunakan fungsi array_column() untuk menciptakan array baru berdasarkan kolom nama. Maka secara otomatis array baru tersebut indexnya dimulai dari 0, jadi supaya hasilnya benar kita dapat menambahkan dengan 1 untuk hasil pencarian tersebut. berikut kodenya:

<?php
//pencarian array

$data[1]['nama'] = "Amir";
$data[1]['hp'] = "0812345678900";
$data[2]['nama'] = "Ferry";
$data[2]['hp'] = "0822345678901";
$data[3]['nama'] = "Johan";
$data[3]['hp'] = "0832345678902";
$data[4]['nama'] = "Siska";
$data[4]['hp'] = "0842345678903";
$data[5]['nama']= "Johan";
$data[5]['hp'] = "0852345678904";

$kolom = array_column($data, 'nama');
while (($cari = array_search("Johan", $kolom)) != NULL) 
{ 
$hasil = $cari+1;
echo "Hasil pencarian : ".$hasil;
echo "<br>";

//setelah ketemu kita unset dulu agar tidak terjadi infinite loop
unset($kolom[$cari]); 
} 
?>

Hasilnya :
Hasil pencarian : 3
Hasil pencarian : 5
Cukup mudah bukan? namun perlu diingat ya yang kita tambahkan satu adalah variabel $hasil bukan $cari, agar pencarian arraynya tetap berjalan mulus tanpa infinite loop. Apabila sudah paham terakhir kita buat aplikasi sederhana untuk mencari data no hp dengan sekaligus memasukan filter lowercase.

Sourcecode:
<?php
//pencarian array

$data[1]['nama'] = "Amir";
$data[1]['hp'] = "0812345678900";
$data[2]['nama'] = "Ferry";
$data[2]['hp'] = "0822345678901";
$data[3]['nama'] = "Johan";
$data[3]['hp'] = "0832345678902";
$data[4]['nama'] = "Siska";
$data[4]['hp'] = "0842345678903";
$data[5]['nama']= "Johan";
$data[5]['hp'] = "0852345678904";
?>

<h2>Aplikasi Pencarian Buku Telpon Sederhana Dengan PHP</h2>
<hr>
<form action="" method="get">
<input type="text" name="varcari" placeholder="Cari Nama">
<input type="submit" value="Cari">
</form>
<hr>

<?php
$varcari = isset($_GET['varcari'])?$_GET['varcari']:'';
$lowcari = strtolower($varcari); //data cari menjadi huruf kecil

$kolom = array_column($data, 'nama');
$lowkolom = array_map('strtolower', $kolom); //data array huruf kecil

echo "Cari : $varcari <br> Di Array : ";
print_r($kolom);
echo "<hr>";
echo "Cari (lowercase) : $lowcari <br> Di Array (lowercase) : ";
print_r($lowkolom);
echo "<hr> Data Asli: ";
echo "<pre>";
print_r($data);
echo "<pre>";

echo "<table width='500' border='1'>";
echo "<tr><th width='300'>Nama Kontak</th><th>No HP</th></tr>";
while (($cari = array_search($lowcari, $lowkolom)) !== false) 
{ 
 $hasil = $cari+1;
 //Tampilkan data hasil pencarian
 echo "<tr>";
 echo "<td>".$data[$hasil]['nama']."</td>";
 echo "<td>".$data[$hasil]['hp']."</td>";
 echo "</tr>";
 //setelah ketemu kita unset dulu agar tidak terjadi infinite loop
 unset($lowkolom[$cari]); 
} 
?>

Ternyata ada bug apabila index atau key nol dianggap null sama fungsi while maka kita ubah operator dibagian while menjadi === false, agar pengecekannya bukan equal lagi (==) tetapi identik (===) nah kalau sudah dicek secara identik masih false berarti memang datanya tidak ditemukan. Bagaimana? tidak terlalu susahkan. berikut adalah hasil dari sourcecode diatas

Hasil:


Selamat mencoba ya, silahkan di share apabila tutorial ini membantu teman-teman semua. Happy Coding ^^

Labels: Array, Pemrograman, PHP, Tutorial

Terima kasih telah membaca Cari Data Array Dengan Array_search Pada PHP. Bila bermanfaat boleh di share yah :)

1 Comment for "Cari Data Array Dengan Array_search Pada PHP"

Back To Top