我正在准备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++) { }
5
” 部分也可能是一个提示。b)、d)、e) 在 php4 中也是可能的,但 c) 不行。诚然,这只是弱证据,但考试题经常是这样的;-) 由于访问 b、d、e 元素需要另一个表查找,因此显然 c) 是“最好”的方法(在给定的选择中)。手册还指出,这在foreach(array(1,2,3) as &$v)
中不起作用,可遍历必须是一个变量。 - VolkerK