PHP isset 與 array_key_exists 的比較

PHP issetarray_key_exists 這兩個東西都可以用檢查陣列的鍵,但僅管用起來有點類似,本質上卻是不相同的,PHP isset 是一個語言結構,而 array_key_exists 則是一個函式(function),執行速度上有所差異,更重要的在於某些情況下,兩者所回傳的結果有所不同,許多工程師們希望增加程式執行的效能,而採用 isset 來處理陣列鍵(Array key)的查詢,但並非任何情況都適合用 isset 來取代 array_key_exists

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";
}
?>
以上輸出結果
用 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 的時候,如何選用這兩個方式就可以正確掌握。

推薦給您的相關延伸閱讀
© Copyright wibibi.com 網頁設計教學百科 基礎的網頁設計規劃、資料庫與程式設計 Since 2012