假设我想迭代一个数组,或者我从不查看值,或者我在其中设置内容,所以我只想要键。哪个更快:
// Set a variable each iteration which is unused.
foreach ($array as $key => $value) {
$array[$key]['foo'] = 'bar';
}
// Call array_keys() before iterating.
foreach (array_keys($array) as $key) {
$array[$key]['foo'] = 'bar';
}
答案 0 :(得分:13)
我认为这也可以,也可能更快:
foreach ($array as &$value) {
$value['foo'] = 'bar';
}
更新:我做了一点测试,似乎这更快。 http://codepad.org/WI7Mtp8K
答案 1 :(得分:2)
暂且不说第二个例子是人为的。意思是,正如 Ashley Banks 所指出的那样,你为什么会这样做?
第一个例子是两者的表现更为出色。第二个是对array_keys()
的附加函数调用的开销。
查看PHP Benchmark以获取其他性能测试。如有疑问,请自行使用microtime()
进行基准测试。