PHP中的array_values是否循环遍历所有项目?

时间:2018-05-14 04:22:02

标签: php arrays optimization

我想知道内置的PHP数组函数,例如array_diffarray_keysarray_values(与array_walk相比)是否遍历每个项目或者是否有内部算法,他们一次性进行计算?

当我想学习如何优化处理100,000个项目的PHP脚本时,这很重要。

例如这个方法:

public function narrowDown($BigArray, $Column, $regex)
{
    # narrowDown to focus on columns with similar data
    $Column = array_column($BigArray, $Column);
    $Search = preg_quote($regex, '~');
    $Matched = preg_grep('~'.$Search.'~', array_combine(array_keys($BigArray), $Column));
    # recreate rows by intersecting with specified keys
    return array_intersect_key($BigArray, $Matched);
}

此方法通过多维数组中的regex在指定列中查找类似的行。 该阵列有18列和100,000个项目。我在想什么应该是优化这些方法的最佳方法。

请随时告知我是否应该使用其他编程语言。

1 个答案:

答案 0 :(得分:1)

是的,他们遍历所有项目,也调用,他们的结果不会以任何方式缓存。

因此,如果您使用完全相同的输入调用两次数组函数,则所有工作将完成两次。