in_array()检查数组中是否存在某个值,第三个参数 strict 效率比较

学习笔记 2016-10-13 19:39:36 8 0

【摘要】in_array — 检查数组中是否存在某个值,bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )。在 haystack 中搜索 needle,如果没有设置 strict 则使用宽松的比较。

in_array() 添加第三个参数为 true ,即变为严格比较,同时还要比较类型,这样避免了 PHP 进行转换类型,跑起来果然快多了。下面是一个对比试验,结果可以说明,in_array() 中添加了第三个参数 true ,会明显缩短比较的时间。

  1. //	获取当前的时间戳(含微秒)
  2. function get_microtime()
  3. {
  4. 	list($usec,$sec) = explode(" ",microtime());
  5. 	return ((float)$sec + (float)$usec);
  6. }
  7. $a = "1800";
  8. $arr = array();
  9. for($j = 0;$j < 3000;$j ++)
  10. {
  11.     $arr[]= "{$j}";
  12. }
  13. $begin_time = get_microtime();
  14. for($i = 0;$i < 3000;$i ++)
  15. {
  16.     if(in_array($a,$arr))
  17.     {
  18.         continue;
  19.     }
  20. }
  21. $end_time = get_microtime();
  22. echo '<br />';
  23. echo $end_time - $begin_time;
  24. $begin_time = get_microtime();
  25. for($i = 0;$i < 3000;$i ++)
  26. {
  27.     if(in_array($a,$arr,true))
  28.     {
  29.         continue;
  30.     }
  31. }
  32. $end_time = get_microtime();
  33. echo '<br />';
  34. echo $end_time - $begin_time;

运行结果如图:

请输入图片名称

如果第三个参数 strict 的值为 TRUE 则 in_array() 函数还会检查 needle 的类型是否和 haystack 中的相同。 而如果第三个参数 strict 的值是 false 则 in_array() 会自动给元素进行类型转换,反而增加了执行的时间。

版权归 马富天博客 所有

本文标题:《in_array()检查数组中是否存在某个值,第三个参数 strict 效率比较》

本文链接地址:http://www.mafutian.net/218.html

转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^

0

0

上一篇《 PHP 中 curl_init() 单线程和 curl_multi_init() 多线程抓取页面的速度比较 》 下一篇《 ubuntu 下开启 apache 的 .htaccess 支持 》
评论审核未开启
表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情
验证码