我想知道内置的PHP数组函数,例如array_diff
,array_keys
或array_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个项目。我在想什么应该是优化这些方法的最佳方法。
请随时告知我是否应该使用其他编程语言。
答案 0 :(得分:1)
是的,他们遍历所有项目,也调用,他们的结果不会以任何方式缓存。
因此,如果您使用完全相同的输入调用两次数组函数,则所有工作将完成两次。