Semak Key di Dalam Array

Friday, February 19, 2016

Apabila telah disetkan key dan value bagi sesuatu array, value array tersebut boleh dipanggil menggunakan key yang telah dikenalpasti.

Sekiranya key yang diberikan tidak dikenali, akan mendatangkan error pada coding.

Jadi, bagi mengatasi masalah ini, setiap key yang dimasukkan, perlu disemak terlebih dahulu adakah ia wujud. Gunakan fungsi in_array yang PHP sediakan.

Dilihat pada contoh di bawah, pada satu table, terdapat senarai PTJ untuk dirujuk.


+------------+--------------------------------+
| kod_ptj    | nama_ptj                       |
+------------+--------------------------------+
| 123456789  | SEKTOR PENJAGAAN KULIT         |
| 987654321  | BAHAGIAN PENGURUSAN KEWANGAN   |
| 121212312  | BAHAGIAN PENGURUSAN MAKANAN    |
| 345345345  | BAHAGIAN PENGURUSAN PERJALANAN |
| 678678678  | BAHAGIAN PENGURUSAN TANGISAN   |
+------------+--------------------------------+


Select yang pertama untuk dapatkan data tersebut dan dimasukkan ke dalam array.

Kemudian, select senarai data yang dimahukan beserta kod PTJ. Kod tersebut boleh digunakan untuk memaparkan nama PTJ.

Masalah timbul sekiranya dalam senarai tersebut, ada beberapa kod yang tiada di dalam table rujukan di atas. Jadi, array tidak dapat mengesan apa-apa data dan menganggap ianya adalah error.

Apa yang boleh dibuat, sebelum memaparkannya, sila semak terlebih dahulu menggunakan in_array.


<?php 
$sqlptj = "SELECT untuk dapatkan kod PTJ dan nama PTJ";
$resultptj = mysql_query($sqlptj);
while($rowptj = mysql_fetch_array($resultptj))
{
 $kodptj = $rowptj["pt_kod_ptj"];
 $namaptj["$kodptj"] = $rowptj["pt_nama_ptj"];
}

$sql3 = "SELECT semua data dan salah satu data tersebut ada kod PTJ";
$result3 = mysql_query($sql3);
while($row3 = mysql_fetch_array($result3))
{
 $kodptjp = $row3["kr_ptj"];
 $displayptj = "";
 
 if (in_array($namaptj["$kodptjp"], $namaptj)) {
  $displayptj = $namaptj["$kodptjp"];
 } 
 else { 
  $displayptj = "<span class=\"label label-sm label-warning\">".$kodptjp."</span>";
 }
?>
<tr>
 <td><?php echo $row3["xxx"]; ?></td>
 <td><?php echo $row3["xxy"]; ?></td>
 <td><?php echo $row3["$xxz"]; ?></td>
 <td><?php echo $displayptj; ?></td>
</tr>
<?php 
}
?>

Selain menggunakan in_array, boleh juga menggunakan array_key_exists. Cara menggunakannya juga sama. Jika menggunakan contoh code di atas, berikut adalah cara menggunakannya.


<?php
//copy code di atas
//code asal guna in_array
if (in_array($namaptj["$kodptjp"], $namaptj)) {
  $displayptj = $namaptj["$kodptjp"];
} 

//code checking guna key exist. Terus check key, bukan check value
if (array_key_exists($row3["kr_ptj"], $namaptj)) {
    echo "Key untuk array ini telah wujud";
}

Bezanya in_array lebih kepada semakan terhadap value, manakala array_key_exists menyemak key atau index di dalam satu array.

0 comments: