引言
接著我們的 PHP 陣列操作系列文章繼續寫。今天說一說如何判斷陣列的key是否存在?
一般大家可能立馬想到了那個函式——isset。但是這個是檢測變數是否設定的,如果用來檢查陣列,可能又會一些副作用。
其實判斷陣列的鍵是否存在,有一個一直以來的函式 array_key_exists ,檢查給定的鍵名或索引是否存在於陣列中。
比如有下面這個例子:
$key = "jim"; // example 1 if (isset($array[$key])) { // ... } // example 2 if (array_key_exists($key, $array)) { // ... }
example 1 與 2 有什麼區別嗎?到底哪一個效能更好一些?
簡單地說,isset 判斷鍵是否存在,同時也判斷鍵存在時值是否為空。效能當然是快的。而 array_key_exists 專門用於判斷陣列鍵是否存在,縱使傳入的值是 NULL,也可以正確執行。功能更為專一。
我們舉一個例子:
$a = array("key1" => "フーバー", "key2" => null); isset($a["key1"]); // true array_key_exists("key1", $a); // true isset($a["key2"]); // false array_key_exists("key2", $a); // true
對於鍵 key2,是存在的,而值是null,所以isset 返回了 false,而 array_key_exists 返回了true,後者才是我們想要的結果。
看到上面的程式碼之後,趕緊自查一下你再程式裡,還有哪些地方用了 isset 用於判斷鍵是否存在的。如果不想程式跑偏,還是建議更改過來哦。
Happy coding :_)
引言
接著我們的 PHP 陣列操作系列文章繼續寫。今天說一說如何判斷陣列的key是否存在?
一般大家可能立馬想到了那個函式——isset。但是這個是檢測變數是否設定的,如果用來檢查陣列,可能又會一些副作用。
學習時間其實判斷陣列的鍵是否存在,有一個一直以來的函式 array_key_exists ,檢查給定的鍵名或索引是否存在於陣列中。
比如有下面這個例子:
$key = "jim"; // example 1 if (isset($array[$key])) { // ... } // example 2 if (array_key_exists($key, $array)) { // ... }
example 1 與 2 有什麼區別嗎?到底哪一個效能更好一些?
簡單地說,isset 判斷鍵是否存在,同時也判斷鍵存在時值是否為空。效能當然是快的。而 array_key_exists 專門用於判斷陣列鍵是否存在,縱使傳入的值是 NULL,也可以正確執行。功能更為專一。
我們舉一個例子:
$a = array("key1" => "フーバー", "key2" => null); isset($a["key1"]); // true array_key_exists("key1", $a); // true isset($a["key2"]); // false array_key_exists("key2", $a); // true
對於鍵 key2,是存在的,而值是null,所以isset 返回了 false,而 array_key_exists 返回了true,後者才是我們想要的結果。
寫在最後看到上面的程式碼之後,趕緊自查一下你再程式裡,還有哪些地方用了 isset 用於判斷鍵是否存在的。如果不想程式跑偏,還是建議更改過來哦。
Happy coding :_)