我知道在数组上循环的更有效方法是foreach,或者在变量中存储计数以避免多次调用它.但我很好奇PHP是否有某种"缓存"的东西,如:
for ($i=0; $i<count($myarray); $i++) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
它是否有类似的东西,我错过了它,或者它没有任何东西,你应该编码:
$count=count($myarray);
for ($i=0; $i<$count; $i++) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
dec*_*eze 15
PHP完全按照你的说法去做.数组的长度可在循环内改变,因此它可能是故意的,我们在调用count每个迭代.PHP不会试图在这里推断你的意思,也不应该.因此,执行此操作的标准方法是:
for ($i = 0, $length = count($myarray); $i < $length; $i++)
Run Code Online (Sandbox Code Playgroud)
PHP 将在每次循环迭代时执行计数。但是,PHP 确实会在内部跟踪数组的大小,因此 count 是一种相对便宜的操作。PHP 并不是在字面上计算数组中的每个元素。但它仍然不是免费的。
使用一个非常简单的 1000 万个项目数组进行简单的变量增量,循环内计数版本为 2.5 秒,循环前计数为 0.9 秒。一个相当大的差异,但不是“巨大的”。
编辑:代码:
$x = range(1, 10000000);
$z = 0;
$start = microtime(true);
for ($i = 0; $i < count($x); $i++) {
$z++;
}
$end = microtime(true); // $end - $start = 2.5047581195831
Run Code Online (Sandbox Code Playgroud)
切换做
$count = count($x);
for ($i = 0; $i < $count; $i++) {
Run Code Online (Sandbox Code Playgroud)
否则一切都一样,时间是 0.96466398239136
| 归档时间: |
|
| 查看次数: |
1294 次 |
| 最近记录: |