2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题


Posted in PHP onApril 08, 2014

但是如果数组比较大的时候,性能就会下降,运行的就会久一点,那如果针对在大数组情况下做优化呢,下面说两种方法(都是通过自定义函数来实现):

1.数组key与value翻转,通过isset判断key是否存在于数组中

/**
 * in_array is too slow when array is large
 */
public static function inArray($item, $array) {
    $flipArray = array_flip($array);
    return isset($flipArray[$item]);
}

大家可能也会问为什么不用 array_key_exists 来做判断二用isset呢? 下面看下array_key_exists() 与 isset() 的对比:
isset()对于数组中为NULL的值不会返回TRUE,而array_key_exists()会。
<?php
$search_array = array('first' => null, 'second' => 4);
// returns false
isset($search_array['first']);
// returns true
array_key_exists('first', $search_array);
?>

2.用implode连接,直接用strpos判断

用implode函数+逗号连起来,直接用strpos判断。php里面字符串取位置速度非常快,尤其是在大数据量的情况下。不过需要注意的是首尾都要加”,” ,这样比较严谨。如: ,user1,user2,user3, 查找的时候,查,user1,。还有strpos要用!== false,因为第一个会返回0。示例如下:

/**
 * in_array is too slow when array is large
 */
public static function inArray($item, $array) {
    $str = implode(',', $array);
    $str = ',' . $str . ',';
    $item = ',' . $item . ',';
    return false !== strpos($item, $str) ? true : false;
}

PHP 相关文章推荐
PHP实现图片简单上传
Oct 09 PHP
php递归列出所有文件和目录的代码
Sep 10 PHP
PHP 抓取新浪读书频道的小说并生成txt电子书的代码
Dec 18 PHP
php读取mysql的简单实例
Jan 15 PHP
php中二维数组排序问题方法详解
Aug 28 PHP
Thinkphp无限级分类代码
Nov 11 PHP
46 个非常有用的 PHP 代码片段
Feb 16 PHP
php bootstrap实现简单登录
Mar 08 PHP
PHP magento后台无法登录问题解决方法
Nov 24 PHP
laravel实现批量更新多条记录的方法示例
Oct 22 PHP
php json转换相关知识(小结)
Dec 21 PHP
PHP使用openssl扩展实现加解密方法示例
Feb 20 PHP
PHP设计模式之观察者模式(Observer)详细介绍和代码实例
Apr 08 #PHP
关于PHP的curl开启问题探讨
Apr 08 #PHP
PHP中Session引起的脚本阻塞问题解决办法
Apr 08 #PHP
PHP中比较两个字符串找出第一个不同字符位置例子
Apr 08 #PHP
PHP用星号隐藏部份用户名、身份证、IP、手机号等实例
Apr 08 #PHP
php实现telnet功能示例
Apr 08 #PHP
C#使用PHP服务端的Web Service通信实例
Apr 08 #PHP
You might like
在IIS上安装PHP4.0正式版
2006/10/09 PHP
PHP 文件类型判断代码
2009/03/13 PHP
PHP 5.3 下载时 VC9、VC6、Thread Safe、Non Thread Safe的区别分析
2011/03/28 PHP
ThinkPHP上使用多说评论插件的方法
2014/10/31 PHP
php用户密码加密算法分析【Discuz加密算法】
2016/10/12 PHP
使用php实现网站验证码功能【推荐】
2017/02/09 PHP
PHP守护进程化在C和PHP环境下的实现
2017/11/21 PHP
php实现映射操作实例详解
2019/10/02 PHP
PHP $O00OO0=urldecode &amp; eval 解密,记一次商业源码的去后门
2020/09/13 PHP
js 页面执行时间计算代码
2009/03/04 Javascript
深入理解jQuery中live与bind方法的区别
2013/12/18 Javascript
js验证IP及子网掩码的合法性有效性示例
2014/04/30 Javascript
设计模式中的facade外观模式在JavaScript开发中的运用
2016/05/18 Javascript
js提交form表单,并传递参数的实现方法
2016/05/25 Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
2016/06/24 Javascript
jQuery实现大图轮播
2017/02/13 Javascript
JS查找英文文章中出现频率最高的单词
2017/03/20 Javascript
JS沙箱模式实例分析
2017/09/04 Javascript
JS+canvas动态绘制饼图的方法示例
2017/09/12 Javascript
Vue.js watch监视属性知识点总结
2019/11/11 Javascript
微信小程序tabBar设置实例解析
2019/11/14 Javascript
深入理解python try异常处理机制
2016/06/01 Python
Python卸载模块的方法汇总
2016/06/07 Python
Python学习小技巧之利用字典的默认行为
2017/05/20 Python
Python爬虫爬取新浪微博内容示例【基于代理IP】
2018/08/03 Python
为什么说python更适合树莓派编程
2020/07/20 Python
python在CMD界面读取excel所有数据的示例
2020/09/28 Python
欧缇丽英国官方网站:Caudalie英国
2016/08/17 全球购物
德国家具在线:Fashion For Home
2017/03/11 全球购物
旅行社各个岗位职责
2014/03/15 职场文书
团结演讲稿范文
2014/05/23 职场文书
亲子阅读的活动方案
2014/08/15 职场文书
乡镇平安建设汇报材料
2014/08/25 职场文书
会计入职心得体会
2016/01/22 职场文书
装修安全责任协议书
2016/03/22 职场文书
JS前端可扩展的低代码UI框架Sunmao使用详解
2022/07/23 Javascript