遍历在PHP数组的最快方法(Fastest way to iterate array in PHP)

2019-08-22 07:09发布

我学习了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++) { }

Answer 1:

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

其余选项(除了A) 可以被用来实现这一目标,取决于括号中的代码,但问题并没有显示的代码。 因此,它必须是C.

该用于循环可以提高性能之前是做计数(),但这个问题不是性能 - 而你回答错误的问题。



Answer 2:

你可以迭代和修改数组的每个元素与任何所示的构建体。 但在一些注意事项:

b)如所述阵列是具有从0到n-1中的密钥的数字阵列才有用。

c)是这两种阵列有用。 另外$value是该元素的值的参考。 因此,改变$value里面foreach也将改变原有的价值。

d)如C),除了$value是值的副本(注意foreach上的副本进行操作$array )。 但随着元素的键,你可以访问和更改为原始值$array[$key]

E)一样d)。 使用$array[$key]来访问和更改原始的元素。



Answer 3:

SPL是这里最好的答案。



文章来源: Fastest way to iterate array in PHP