php - 如何读取 PHP foreach 循环中的数组?

标签 php arrays performance loops foreach

我们都听说过如何在 for 循环中这样做:

for ($i = 0, $count = count($array); $i < $c; ++$i)
{
    // Do stuff while traversing array
}

而不是这个:

for ($i = 0; $i < count($array); ++$i)
{
    // Do stuff while traversing array
}

出于性能原因(即初始化 $count 只会调用一次 count(),而不是每次都调用 count()条件检查)。

如果在 foreach 循环中,我这样做是否也会产生影响:

$array = do_something_that_returns_an_array();

foreach ($array as $key => $val)
{
    // Do stuff while traversing array
}

而不是这个:

foreach (do_something_that_returns_an_array() as $key => $val)
{
    // Do stuff while traversing array
}

假设情况允许我使用其中之一?也就是说,PHP 是在两种情况下只调用函数一次,还是像 for 那样,第二种情况会一次又一次地调用函数?

最佳答案

foreach()implemented using iterators - 因此它只调用一次返回数组的函数,然后使用指向现有结果集的迭代器继续每个项目。

关于php - 如何读取 PHP foreach 循环中的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1685689/

相关文章:

performance - GitLab CI 加速

javascript - 在ajax jquery中显示json响应,

php - sql中如何划分学生

javascript - 带有数组拼接的 Angular $watch

PHP 的 SPL : Do its interfaces involving arrays cover all array properties?

performance - 为什么 Outlook 关闭时 Excel VBA 的运行速度明显加快?

html - Google 可以用缩小的 HTML 和 CSS 索引网站吗?

php - SQL Server 选择具有相同最后操作的行列表

php - Linux 自动代码格式化(PHP、JavaScript、HTML、CSS、MySQL)

ios - swift : Process UIImage data for use in Firebase custom TFLite model