PHP 数组查找 in_array 性能优化

0 Comment

据说 PHP in_array 大数据量下很慢,如何优化?老头找到几篇教程,记录过来了,有需要参考一下。

PHP 高效率 数组查找 - 替换 in_array

来源:wintop

作者在处理一个 1000 多个元素数组,用 PHP in_array 计算,效率很差,循环 100 万次要几十秒。同时用 array_flip 反转函数,判断数组 key,通过 100 万次运算,效果不好,也是几十秒;也有用 implode 拼接成字符串,然后 stripos 查出位置,返回是否包含,效率也是很差,几十秒。

下面是作者写的方法,可替换 PHP in_array ,效率提升上百倍:

function inArray(string $str,array $strArray){
foreach($strArray as $v){
if(str_replace($v,$str,'')=='' && strlen($v)==strlen($v)){
return true;
}
}
return false;
}

in_array 数组 优化思考

来源:时光博客 ·· 原文长截图

结论:

  • 如果明确数据类型,in_array 第三个参数建议一直开启;
  • 如果搜索单一字符串,基数 100 以内,可以选择 isset(array_flip()), 基数在 100 以上,则选择 in_array() 更好;
  • 如果是搜索数组,选择 isset(array_flip()) 会更好。

PHP 性能优化:in_array 和 isset 在大数组查询中耗时相差巨大,以及巧妙使用 array_flip

来源:根号五 ·· 原文长截图

作者在 PHP 业务开发中,发现一个问题:两个较大数组(20万+元素),遍历其中一个 $a,另一个数组 $b 用于查找元素,速度非常之慢,加上业务处理,耗时快半个小时之久。

比如:

foreach($a as $val){
if(in_array($xx, $b)){
//
}
}

排查后发现 in_array() 速度很慢。怎么样优化呢?在 PHP 数组中,如果用 in_array 或者 array_search 这种寻找数组 value值,PHP 会整个遍历一遍查询,这样当数组很大时,当然会很慢。

而考虑使用 array_key_exists 或者 语言构造器 isset 则会很快。但是这两个用法需要 value 是 key 才行,非常幸运,PHP 是世界上最好的语言。array_flip() 提供这个用法。

优化代码,速度瞬间起飞:

$c = array_flip($b);
foreach($a as $val){
if(isset($c[$xx])){
//
}
}

除非注明,垃圾站文章均为网络收集,本文地址 https://cyhour.com/1813/,转载时烦请以链接形式注明原始出处。
声明:我们不销售主机,任何VPS主机均有跑路风险且需定期备份,防止数据丢失。信息以实际为准,评测仅供参考不代表权威!
🍄:Netflix 奈飞 YouTube 合租

WordPress 文章 tag 标签使用 ID 形式固定链接

WordPress 设置中可以设定使用 post_id 作为文章/页面「固定链接」形式,但是无法设置文章 tag 标签也使用 ID 形式固定链接。 WordPress 文章 tag 标签的固定链接默认使用标签的别名,如果标签没有设置别名,并且标签名字带中文,那么固定链接就会带有中文,然后被 urlencode 转义成类似下面的…
浏览: 68 标签:  ,  ,  , 

希捷 西数 东芝 SMR 叠瓦式硬盘完整列表 硬盘购买指南

CMR(Conventional Magnetic Recording)又称作 PMR(Perpendicular Magnetic Recording)垂直写入技术,这是传统硬盘技术。SMR(Shingled Magneting Recording),叠瓦式记录技术,可以提高储存数据资料密度,从而提高硬盘储存容量。 SMR 叠瓦式硬盘优势在于大容量、低价格(性价比更高),缺点是…

WordPress 默认主题 Twenty Twenty-Two 将随 WordPress 5.9 正式发布

WordPress 2022 全新默认主题 Twenty Twenty-Two 将随 WordPress 5.9 「计划 2021 年 12 月 14 日」正式发布,Twenty Twenty-Two 主题充分使用 WordPress 最新的古腾堡编辑器的全站编功能和全局样式功能,有望成为 WordPress 有史以来最灵活自定义的主题。 WordPress 默认主题 Twenty Twenty-T…

全网热门 BitTorrent Tracker 加速BT下载 BT下载软件推荐

BT 下载速度取决于其他下载同一资源的用户上传速度。做种「指上传文件数据给其他 BT 用户的行为」用户越多,你的下载速度越快!如果资源没人提供上传,就会完全没有下载速度,而做种用户靠 Peer、DHT、Tracker 获得。 Tracker 是什么? BT 下载的文件都是其他用户上传给你的。 BT 下载速度…
浏览: 110 标签:  ,  ,  ,  , 

Comments:0

发表留言

Vultr 送$100,搬瓦工年付最低$49,优惠码 BWH3HYATVBJW,更多推荐VPS信息