在判斷某個 PHP 數組的索引值是否存在,一般會使用 isset 和 array_key_exists 兩種方法。
isset($a['key'])
array_key_exists('key', $a)
array_key_exists 確切地告訴你,數組是否存在某個鍵,而 isset 則只是返回鍵值是否為 null 的狀態。也就是說,假設給定下面的數組:
$a = array('key1' => '123', 'key2' => null);
使用這兩個方法判斷鍵值存在情況,結果如下:
isset($a['key1']); // true
array_key_exists('key1', $a); // true
isset($a['key2']); // false
array_key_exists('key2', $a); // true
從 PHP 引擎本身來說,底層都是 C 語言的實現,array_key_exists 和 isset 應該都是很快的。如果運算次數上千次上萬次,這種情況下 isset 的性能應該更為顯著。