最佳答案
首先,我明白在90% 的应用程序中,性能差异是完全不相关的,但我只需要知道哪个构造更快。还有..。
目前网上关于他们的信息令人困惑。很多人认为 foreach 不好,但是从技术上来说它应该更快,因为它应该能够使用迭代器简化数组遍历的编写。迭代器的速度也应该更快,但是在 PHP 中迭代器的速度明显非常慢(或者这不是 PHP 的特性?).我说的是数组函数: next () prev () reset ()等等,如果它们是函数,而不是那些看起来像函数的 PHP 语言特性的话。
为了缩小范围,我不喜欢在超过1的步骤中遍历数组(也没有负步骤,即。反向迭代)。我对任意点之间的遍历也不感兴趣,只对0到长度的遍历感兴趣。我也没有看到定期使用超过1000个键来操作数组,但是我确实看到一个数组在应用程序的逻辑中被多次遍历!至于操作,主要是字符串操作和回显。
以下是一些参考网站:
Http://www.phpbench.com/
Http://www.php.lt/benchmark/phpbench.php
我到处都听到:
foreach
比较慢,因此 for
/while
比较快foreach
复制它迭代的数组; 为了使其更快,需要使用引用$key = array_keys($aHash); $size = sizeOf($key);
for ($i=0; $i < $size; $i++)
比 foreach
快我的问题是。我编写了这个测试脚本: http://pastebin.com/1ZgK07US,不管我运行这个脚本多少次,我都会得到这样的结果:
foreach 1.1438131332397
foreach (using reference) 1.2919359207153
for 1.4262869358063
foreach (hash table) 1.5696921348572
for (hash table) 2.4778981208801
简而言之:
foreach
比 foreach
快foreach
比 for
快foreach
比 for
快有人能解释一下吗?
PHP 版本5.3.0
对于任何简单的遍历,我都可能坚持使用 foreach (非引用版本)。