php 查找数组元素提高效率的方法详解


Posted in PHP onMay 05, 2017

1.php in_array方法说明

PHP查找数组元素是否存在,一般会使用in_array方法。

bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )

参数说明:

needle

待搜索的值,如果needle是字符串,比较是区分大小写的。

haystack

用来比较的数组

strict

如果第三个参数 strict 的值为 TRUE 则 in_array() 函数还会检查 needle 的类型是否和 haystack 中的相同

返回值

如果找到 needle 则返回 TRUE,否则返回 FALSE

2.in_array查找元素效率

当比较的数组haystack较大时,in_array效率会很低

例子:使用in_array对有10万个元素的数组进行1000次比较

<?php
$arr = array();

// 创建10万个元素的数组
for($i=0; $i<100000; $i++){
 $arr[] = $i;
}

// 记录开始时间
$starttime = getMicrotime();

// 随机创建1000个数字使用in_array比较
for($j=0; $j<1000; $j++){
 $str = mt_rand(1,99999);
 in_array($str, $arr);
}

// 记录结束时间
$endtime = getMicrotime();

echo 'run time:'.(float)(($endtime-$starttime)*1000).'ms<br>';
/**
 * 获取microtime
 * @return float
 */
function getMicrotime(){
 list($usec, $sec) = explode(' ', microtime());
 return (float)$usec + (float)$sec;
}
?>

run time:2003.6449432373ms

使用in_array判断元素是否存在,在10万个元素的数组中比较1000次,运行时间需要约2秒

3.提高查找元素效率方法

我们可以先使用array_flip进行键值互换,然后使用isset方法来判断元素是否存在,这样可以提高效率。

例子:使用array_flip先进行键值互换,再使用isset方法判断,在10万个元素的数组中比较1000次

<?php
$arr = array();

// 创建10万个元素的数组
for($i=0; $i<100000; $i++){
 $arr[] = $i;
}

// 键值互换
$arr = array_flip($arr);

// 记录开始时间
$starttime = getMicrotime();

// 随机创建1000个数字使用isset比较
for($j=0; $j<1000; $j++){
 $str = mt_rand(1,99999);
 isset($arr[$str]);
}

// 记录结束时间
$endtime = getMicrotime();

echo 'run time:'.(float)(($endtime-$starttime)*1000).'ms<br>';
/**
 * 获取microtime
 * @return float
 */
function getMicrotime(){
 list($usec, $sec) = explode(' ', microtime());
 return (float)$usec + (float)$sec;
}
?>

run time:1.2781620025635ms

使用array_flipisset判断元素是否存在,在10万个元素的数组中比较1000次,运行时间需要约1.2毫秒

因此,对于大数组进行比较,使用array_flipisset方法会比in_array效率高很多。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

PHP 相关文章推荐
用PHP将数据导入到Foxmail
Oct 09 PHP
PHP中的正规表达式(一)
Oct 09 PHP
用穿越火线快速入门php面向对象
Feb 22 PHP
PHP缓存集成库phpFastCache用法
Dec 15 PHP
PHP请求Socket接口测试实例
Aug 12 PHP
PHP之十六个魔术方法详细介绍
Nov 01 PHP
CI框架常用经典操作类总结(路由,伪静态,分页,session,验证码等)
Nov 21 PHP
PHP 芝麻信用接入的注意事项
Dec 01 PHP
php 反斜杠处理函数addslashes()和stripslashes()实例详解
Dec 25 PHP
Yii2实现自定义独立验证器的方法
May 05 PHP
thinkphp实现附件上传功能
May 26 PHP
PHP实现打包下载文件的方法示例
Oct 07 PHP
thinkPHP分页功能实例详解
May 05 #PHP
php cli模式下获取参数的方法
May 05 #PHP
ajax调用返回php接口返回json数据的方法(必看篇)
May 05 #PHP
ThinkPHP 3.2.2实现事务操作的方法
May 05 #PHP
PHP实现Session入库/存入redis的方法
May 04 #PHP
ThinkPHP中Widget扩展的两种写法及调用方法详解
May 04 #PHP
PHP+jQuery实现滚屏无刷新动态加载数据功能详解
May 04 #PHP
You might like
php 结果集的分页实现代码
2009/03/10 PHP
在PHP模板引擎smarty生成随机数的方法和math函数详解
2014/04/24 PHP
codeigniter框架The URI you submitted has disallowed characters错误解决方法
2014/05/06 PHP
Symfony实现行为和模板中取得request参数的方法
2016/03/17 PHP
php基于curl实现随机ip地址抓取内容的方法
2016/10/11 PHP
Yii框架数据库查询、增加、删除操作示例
2019/10/14 PHP
JQuery的ajax获取数据后的处理总结(html,xml,json)
2010/07/14 Javascript
jQuery中的bind绑定事件与文本框改变事件的临时解决方法
2010/08/13 Javascript
js将json格式内容转换成对象的方法
2013/11/01 Javascript
javascript读写json示例
2014/04/11 Javascript
简介JavaScript中的unshift()方法的使用
2015/06/09 Javascript
在Ubuntu系统上安装Node.JS的教程
2015/10/15 Javascript
jQuery实现非常实用漂亮的select下拉菜单选择效果
2015/11/06 Javascript
Base64(二进制)图片编码解析及在各种浏览器的兼容性处理
2017/02/09 Javascript
JS获取子、父、兄节点方法小结
2017/08/14 Javascript
使用InstantClick.js让页面提前加载200ms
2017/09/12 Javascript
利用JS hash制作单页Web应用的方法详解
2017/10/10 Javascript
vue通过数据过滤实现表格合并
2020/11/30 Javascript
python字典序问题实例
2014/09/26 Python
介绍Python的@property装饰器的用法
2015/04/28 Python
python 3.3 下载固定链接文件并保存的方法
2018/12/18 Python
Python获取基金网站网页内容、使用BeautifulSoup库分析html操作示例
2019/06/04 Python
用python打印菱形的实操方法和代码
2019/06/25 Python
python 函数中的内置函数及用法详解
2019/07/02 Python
pandas将多个dataframe以多个sheet的形式保存到一个excel文件中
2019/10/10 Python
TensorFlow tf.nn.conv2d实现卷积的方式
2020/01/03 Python
基于FME使用Python过程图解
2020/05/13 Python
Python导入父文件夹中模块并读取当前文件夹内的资源
2020/11/19 Python
css3实现平移效果(transfrom:translate)的示例
2020/11/13 HTML / CSS
css animation配合SVG制作能量流动效果
2021/03/24 HTML / CSS
2014年国培研修感言
2014/03/09 职场文书
学生检讨书如何写
2014/10/30 职场文书
婚宴父母致辞
2015/07/27 职场文书
中学总务处工作总结
2015/08/12 职场文书
MySQL 分页查询的优化技巧
2021/05/12 MySQL
如何理解python接口自动化之logging日志模块
2021/06/15 Python