PHP Foreach循环效率

Ste*_*ins 5 php arrays

foreach在PHP中使用类似于这样的循环:

foreach ($class->getAttributes() as $attribute) {
// Work
}
Run Code Online (Sandbox Code Playgroud)

关于效率,$attributes = $class->getAttributes();foreach循环外部使用语句并迭代$attributes变量是否更好?或者$class->getAttributes()语句只是foreach在开头的声明中被调用一次?

(我意识到在这种情况下这可能不是一个很大的效率问题,但我想知道这个和其他更大案例的原理)

谢谢,

史蒂夫

Pas*_*TIN 15

使用循环$class->getAttributes()外部foreach并使用临时变量,或保持它像你写的那样不应该改变任何关于性能的东西:它仍然只会被评估一次.

以下是一个证明它的例子:

function get_array() {
    echo 'function called !<br />';
    return array(
        'first' => 123,
        'second' => 456,
        'last' => 789, 
    );
}
foreach (get_array() as $key => $value) {
    echo "$key : $value<br />";
}
Run Code Online (Sandbox Code Playgroud)

我使用函数而不是类的方法来获得一个更短的例子,但原理与类+方法相同.


并调用此部分代码提供以下输出:

function called !
first : 123
second : 456
last : 789
Run Code Online (Sandbox Code Playgroud)

即,该get_array()函数仅在foreach循环开始时调用一次.