麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 語言 > PHP > 正文

php數組判斷鍵值是否存在示例

2024-09-04 11:46:40
字體:
來源:轉載
供稿:網友

PHP 檢測數組是否存在某個鍵值 判斷數組索引是否存在 array_key_exists();

bool array_key_exists ( mixed key, array search )

  1. <?php
  2. /*
  3. array_key_exists() 在給定的 key 存在于數組中時返回 TRUE。key 可以是任何能作為數組索引的值。
  4. *
  5. $search_array = array("first" => 1, "second" => 4);
  6. if (array_key_exists("first"$search_array)) {
  7.    echo "The 'first' element is in the array";
  8. }
  9. ?> 

網上說還有empty,isset也可以來驗證key值是否存在

empty: 參數為0或為NULL時(如上面列子),empty均返回TRUE,詳細情況可以參見empty官方手冊

isset: 參數為NULL時,返回FALSE,0與NULL在PHP中是有區別的,isset(0)返回TRUE

  1. <?php 
  2.  
  3. $a = array('a'=>1, 'b'=>0, 'c'=>NULL); 
  4.  
  5. echo 'a test by empty: ' , emptyempty($a['a']) ? 'not exist' : 'exist', PHP_EOL; 
  6.  
  7. echo 'a test by isset: ' , isset($a['a']) ? 'exist' : 'not exist', PHP_EOL; 
  8.  
  9. echo 'a test by array_key_exists: ' , array_key_exists('a'$a) ? 'exist' : 'not exist', PHP_EOL, PHP_EOL; 
  10.  
  11. echo 'b test by empty: ' , emptyempty($a['b']) ? 'not exist' : 'exist', PHP_EOL; 
  12.  
  13. echo 'b test by isset: ' , isset($a['b']) ? 'exist' : 'not exist', PHP_EOL; 
  14.  
  15. echo 'b test by array_key_exists: ' , array_key_exists('b'$a) ? 'exist' : 'not exist', PHP_EOL, PHP_EOL; 
  16.  
  17. echo 'c test by empty: ' , emptyempty($a['c']) ? 'not exist' : 'exist', PHP_EOL; 
  18.  
  19. echo 'c test by isset: ' , isset($a['c']) ? 'exist' : 'not exist', PHP_EOL; 
  20.  
  21. echo 'c test by array_key_exists: ' , array_key_exists('c'$a) ? 'exist' : 'not exist', PHP_EOL, PHP_EOL; 
  22.     輸出結果如下: 
  23.     ======================================================== 
  24.     a test by emptyempty: exist 
  25.     a test by isset: exist 
  26.     a test by array_key_exists: exist 
  27.       
  28.     b test by emptyempty: not exist 
  29.     b test by isset: exist 
  30.     b test by array_key_exists: exist 
  31.       
  32.  
  33. c test by emptyempty: not exist 
  34.     c test by isset: not exist 
  35.     c test by array_key_exists: exist 

三種方式的語法區別

empty: 參數為0或為NULL時(如上面列子),empty均返回TRUE,詳細情況可以參見empty官方手冊

isset: 參數為NULL時,返回FALSE,0與NULL在PHP中是有區別的,isset(0)返回TRUE

array_key_exists: 純粹的判斷數組鍵值對是否存在,無論值是多少

所以,從準確性的角度來看,array_key_exists是最準確的!

三種方式的性能比較

從網上拿到一組數據,參見這里或參考資料,如下所示:

For a small array:

array_key_exists: float(0.18357992172241)

empty: float(0.072798013687134)

isset: float(0.070242881774902)

For a relative big array:

array_key_exists: float(0.57489585876465)

empty: float(0.0068421363830566)

isset: float(0.0069410800933838)

可以看到在大數據情況下,empty和isset的性能比array_key_exists快了2個數量級,差別還是很大。如果頻繁判斷,還是需要優化。產生這么大性能差別的原因,個人猜測,可能是isset和empty作為php語法結構不是函數,php解釋器做了優化,而array_key_exists作為函數,沒有相關優化。具體原因,有待通過源碼考究。

三種方式的使用建議

(鑒于empty與isset性能類似,但是isset準確性較高,這里就只比較isset與array_key_exists)

如果數組不可能出現值為NULL的情況,建議使用isset

如果數組中經常出現值為NULL的情況,建議使用array_key_exists

如果數組中可能出現值為NULL,但是較少的情況,建議結合isset與array_key_exists使用,如“if (isset($arr[‘key’]) || array_key_exists(‘key’, $arr)){/*do somthing*/}”。此方法兼顧了性能和準確性,但是代碼變長了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美日韩亚洲国产 | 色妞欧美| 国产精品自拍啪啪 | 久久久国产电影 | vidz 98hd| 国产精品一区二av18款 | 亚洲一区二区三区日本久久九 | 国产亚洲精品久久久久久久软件 | 黄色男女视频 | av在线官网 | 亚洲人成综合第一网 | va免费视频 | 久久96国产精品久久久 | 免费网站看v片在线a | 一级一级一级毛片 | 亚洲精品久久久久久久久久久 | 成人男女啪啪免费观看网站四虎 | 亚洲午夜精品视频 | 羞羞视频.www在线观看 | 一级做a爱片久久 | 欧美成人精品一区二区 | 中文字幕激情 | 成人毛片在线 | 日韩视频一区二区 | 99激情视频 | 中文字幕一区二区三区四区 | 欧美亚洲一级 | 一级做a爱片性色毛片 | 极色品影院 | 毛片在线视频免费观看 | 男男啪羞羞视频网站 | 国产一区二区视频网站 | 中国产一级毛片 | 精品一区二区三区欧美 | 亚洲 综合 欧美 动漫 丝袜图 | 国产精品成人亚洲一区二区 | 国产精品美女久久久免费 | 特级黄aaaaaaaaa毛片 | 黄网站在线免费看 | 精品在线观看一区二区 | 久草在线视频免费播放 |