我已经用php编程很长时间了。我对资源的效率和它们的行为速度有以下疑问。
我的问题是这样的:
遍历数组时哪个函数更有效?
我正在阅读文档,它表明foreach
它是用来遍历数组的。但问题在于哪一个更有效,要么因为它访问的方法更少,要么因为它更加原生。
为了便于理解,这里举个例子:
示例:
<?php
$colors = array("red", "green", "blue", "yellow");
$cantidad = count($colors);
for ($i = 0; $i <= $cantidad $i++) {
echo $colors[$i]."<br>";
}
?>
Foreach 示例:
<?php
$colors = array("red", "green", "blue", "yellow");
foreach ($colors as $value) {
echo $value."<br>";
}
?>
我很感激你的兴趣!
笔记:
我记住,仅在几个数据的层面上,这并没有反映出来。但这个想法是在许多数据的层面上呈现它
笔记2:
for
作为对如果我把它放在我的循环中这个过程会减慢这一事实的回应的一部分count($colors)
,我决定将它分开,以便只测量 for 本身,而不是进入不必要的方法的那个。
在 PHP 中遍历一个数组,我们谈论的是相当大的数组,比如 10,000 次迭代,最有效的将是使用 foreach。
我给你一个执行的例子。
笔记:
如果更改以下行
因此:
变化非常明显。因此最终具有更好的循环性能
for
使用这个简单的算法,您可以计算每个循环通过相同元素所需的时间。
首先 a
Array
有10,000 个随机值String
:我们将使用两个循环来使用函数进行时间测试
microtime
:最后我们打印结果:
根据运行程序的计算机,您将获得一些结果或其他结果,但显然它似乎
foreach
比for
.我的结果:
这是完整的测试代码
对此有一个已发布的基准,结论如下:
在所有情况下,循环
foreach
都比for
和过程快得多while ()
。根据您自己的代码并进行更改以增加
array
并进行最后修改以单独放置$contar = count($colors);
代码:
我留下了结果,因为他们没有更新以前的答案。我把结果放在每次循环
for
总是更好的地方。感谢@Voiser 积极参与这个话题