首頁>Club>
isset對值為空的,也返回false。如何解決?
17
回覆列表
  • 1 # 程式設計師小助手

    引言

    接著我們的 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 :_)

  • 中秋節和大豐收的關聯?
  • 為什麼王莽被殺後從東漢到晉都收藏著王莽的腦袋?