您的当前位置:首页>全部文章>文章详情

PHP中使用in_array异常变慢的问题处理

gathin发表于:2023-08-24 18:17:04浏览:238次TAG: #PHP

问题情况

最近调查生产环境中不运行的慢日志,经过断点排查,发现代码运行慢的地方不是数据库,而是在代码 foreach 中使用了in_array ,in_array() 每次判断 都会全部遍历数组,大数组情况下导致效率低下,原来代码 类似如下:

$group_ids=array(1,3,5,7,8);//假设这数组很大,
foreach($result as $k=>$v){
    if ( in_array( $v['id'], $group ) ){
        //在里面的逻辑
    }else{
        //不在逻辑
    }
}

经过改进后速度大进如下:
```php
$group_ids=array(1,3,5,7,8);//假设这数组很大,
$temp = array_flip( $group_ids ); //这个函数将 元素转为 key
foreach($result as $k=>$v){
//换 isset 后效率拉满
if ( isset( $temp[$v[‘id’]] ){
//在里面的逻辑
}else{
//不在逻辑
}
}