在 PHP 中迭代数组的最快方法

2022-08-30 18:29:56

我正在攻读Zend PHP认证

我不确定这个问题的答案。

问:使用 PHP 5 迭代和修改数组的每个元素的最佳方法是什么?

a) 在迭代过程中不能修改数组

b)for($i = 0; $i < count($array); $i++) { /* ... */ }

c)foreach($array as $key => &$val) { /* ... */ }

d)foreach($array as $key => $val) { /* ... */ }

e)while(list($key, $val) = each($array)) { /* ... */ }


我的直觉是(B),因为没有必要创建一个临时变量,但后来我意识到它不适用于关联数组。

在互联网上进一步搜索,我发现了这个:

将不变数组计数存储在单独的变量中可提高性能。

$cnt = count($array);
for ($i = 0; $i < $cnt; $i++) { }

答案 1

从这些选项来看,C将是显而易见的答案。

其余的选项(A除外)可用于实现此目的,具体取决于括号内的代码,但问题显示该代码。所以它必须是C。

而且你回答了错误的问题 - 是的,在for周期之前做count()会提高性能,但这个问题不是关于性能的。


答案 2

您可以使用任何显示的构造迭代和修改数组的每个元素。但对此有一些说明:

b) 仅当数组是键从 0 到 n-1 的数字数组时才有用。

c) 对于这两种数组都很有用。此外,还是元素值的引用。因此,更改内部前额也会更改原始值。$value$value

d) 与 c) 类似,但值的副本除外(注意,该副本对 )但是使用元素的键,您可以使用 访问和更改原始值。$valueforeach$array$array[$key]

e) 如 d)。用于访问和更改原始元素。$array[$key]