我们都听说过如何在 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/