StepCoding

การตรวจสอบว่ามีสมาชิก (key) ในอะเรย์หรือไม่

อ่าน [1331] หมวดหมู่: Array

ในการตรวจสอบว่าอะเรย์ตัวนั้น ๆ มี key ที่ต้องการหรือไม่ จะต้องใช้ฟังก์ชัน array_key_exists() ในการตรวจสอบ

# รูปแบบ
$bool = array_key_exists(key, array);
โดยที่
	$bool คือ ตัวแปร boolean ที่รับการคืนค่าจากการตรวจสอบว่ามี key นั้น ๆ ในอะเรย์หรือไม่
	key คือ key ที่ต้องการตรวจสอบ
	array คือ array ที่ต้องการตรวจสอบ

บางคนอาจจะใช้การตรวจสอบ key ด้วยวิธีข้างล่างนี้ ซึ่งเป็นวิธีที่ไม่สมบูรณ์เนื่องจากว่า ถ้าใน array มี key นั้น ๆ อยู่แต่เป็นค่าว่างต่าง ๆ เช่น "", NULL, 0 เป็นต้น มันก็จะคืนค่าเป็น false

<?php
$person = array("name" => NULL, "age" => 21);

// การตรวจสอบแบบนี้ มันจะได้ผลลัพธ์มาเป็น false เนื่องจาก key 'name' ของอะเรย์ $person มีค่าเป็น NULL
if ($person['name']) {

}

// มันจะคืนค่าเป็น true เนื่องจากในอะเรย์ $person มี key 'name' อยู่
if (array_key_exists("name", $person)) {
	
}
?>

บางคนอาจจะใช้ฟังก์ชัน isset() ในการตรวจสอบว่ามี key นั้น ๆ อยู่ในอะเรย์หรือไม่ ซึ่งมันจะคืนค่าเป็น true ก็ต่อเมื่อมี key นั้น ๆ อยู่ในอะเรย์ เช่นกัน และค่านั้นจะต้องไม่เป็น NULL ด้วย (แตกต่างกันตรงนี้ครับ)

<?php
$a = array(0, NULL, '');
function tf($v) {
	return $v ? "T": "F";
}
for ($i = 0; $i < 4; $i++) {
	printf("%d: %s %s\n", $i, tf(isset($a[$i])), tf(array_key_exists($i, $a)));
}

/*
0: T T
1: F T
2: T T
3: F F
*/
?>

จะเห็นว่ามันแตกต่างกันตรงที่ถ้าค่าของ key นั้น ๆ เป็น NULL ฟังก์ชัน isset() จะคืนค่าเป็น false

ผู้สนับสนุน