手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆

array_key_exists 和 isset

首页 > PHP >

看到andot的hprose中有使用array_key_exists,就想问为什么不用isset,再一想哦。isset不能判断$a['xxx'] = null的情况。这时候看了一下评论,有人建议用isset() || array_key_exists来辅助判断,说是性能有大提升。

于是写了点代码测试,果然:

XML/HTML代码
  1. count array: 999900 ; loop :100000  
  2. $array['109011'] = 109011;  
  3. 1. array_key_exists(109011,$array);  
  4.   bool(true)  
  5.   0.021718   
  6.   
  7. 2. isset($array['109011']);  
  8.   bool(true)  
  9.   0.004888   
  10.   
  11. 3. isset( $array['109011'] ) || array_key_exists( '109011', $array )  
  12.   bool(true)  
  13.   0.005100   
  14.   
  15.   
  16. count array: 999900 ; loop :100000  
  17. $array['109011'] = null;  
  18. 1. array_key_exists(109011,$array);  
  19.   bool(true)  
  20.   0.026091   
  21.   
  22. 2. isset($array['109011']);  
  23.   bool(false)  //注意看这里
  24.   0.006697   
  25.   
  26. 3. isset( $array['109011'] ) || array_key_exists( '109011', $array )  
  27.   bool(true)  
  28.   0.026621   

基本上,在$a['x'] 不是null的情况下,性能提升4倍左右 ,如果该值是null,这损耗可以接受。

数组长度是999900,循环100000次

所以以后代码还是 isset($a[$key])||array_key_exists($key,$a) 比较好。
当然,如果你平时处理isset($_GET['xxx'])的时候,不需要用array_key_exists的,因为URL中都是string

 




本站采用创作共享版权协议, 要求署名、非商业和保持一致. 本站欢迎任何非商业应用的转载, 但须注明出自"易栈网-膘叔", 保留原始链接, 此外还必须标注原文标题和链接.

« 上一篇 | 下一篇 »

发表评论

评论内容 (必填):