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

Yad*_*ada 23 php arrays iteration

我正在攻读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++) { }
Run Code Online (Sandbox Code Playgroud)

Ant*_*nna 20

从这些选项中,C将是明显的答案.

剩下的选项(除了A)可以用来实现,取决于括号内的代码,但问题不显示该代码.所以一定是C.

你正在回答错误的问题 - 是的,在for循环之前做count()会提高性能,但这个问题与性能无关.


Gum*_*mbo 10

您可以使用任何显示的构造迭代和修改数组的每个元素.但有些注意到:

b)仅在数组为0到n-1之间的数字数组时才有用.

c)对两种阵列都有用.另外$value是元素值的参考.因此改变$value内部foreach也会改变原始价值.

d)与c)类似,除非$value是价值的副本(注意事项foreach的副本$array).但是使用元素的键,您可以访问并更改原始值$array[$key].

e)像d).使用$array[$key]访问和更改原始的元素.