PHP isset 與 array_key_exists 的基本語法
bool isset ( 要檢查的陣列鍵 ); bool array_key_exists ( 要查詢的鍵名 $key , 要被檢查的 PHP 陣列 )
由語法可以得知兩者都是回傳布林值,也就是 TRUE OR FALSE,看似類似的兩個用法,其實是有差異的。
PHP isset 與 array_key_exists 回傳差異的部分
<?php
$NewArray = array('A' => null, 'B' => '');
if (isset($NewArray[A])) {
echo "用 isset 找到陣列中含有鍵名 A<br>";
}
if (isset($NewArray[B])) {
echo "用 isset 找到陣列中含有鍵名 B<br>";
}
if (array_key_exists('A', $NewArray)) {
echo "用 array_key_exists 找到陣列中含有鍵名 A<br>";
}
if (array_key_exists('B', $NewArray)) {
echo "用 array_key_exists 找到陣列中含有鍵名 B";
}
?>
以上輸出結果$NewArray = array('A' => null, 'B' => '');
if (isset($NewArray[A])) {
echo "用 isset 找到陣列中含有鍵名 A<br>";
}
if (isset($NewArray[B])) {
echo "用 isset 找到陣列中含有鍵名 B<br>";
}
if (array_key_exists('A', $NewArray)) {
echo "用 array_key_exists 找到陣列中含有鍵名 A<br>";
}
if (array_key_exists('B', $NewArray)) {
echo "用 array_key_exists 找到陣列中含有鍵名 B";
}
?>
用 isset 找到陣列中含有鍵名 B
用 array_key_exists 找到陣列中含有鍵名 A
用 array_key_exists 找到陣列中含有鍵名 B
由範例的輸出結果可以看到,PHP isset 在陣列鍵值為 null 時,會回傳 false,所以第一次透過 if 條件判斷後,並不會有結果輸出,第二次找鍵名 B 卻有找到,是因為 $NewArray[B] 雖然是空值,但並非為 null,這也是有差異的。再來看看 array_key_exists 函式,無論查詢的鍵名是不是有值或者 null,只要有找到,就一律回傳 true,這就是兩者間的主要差異之一,清楚這點之後,未來在設計 PHP 的時候,如何選用這兩個方式就可以正確掌握。用 array_key_exists 找到陣列中含有鍵名 A
用 array_key_exists 找到陣列中含有鍵名 B
推薦給您的相關延伸閱讀