php 使用临时变量时 foreach 循环无法迭代

php foreach loop failing to iterate when temporary variables are used

我正在尝试遍历一个简单的 php 数组,并且 运行 出现导致迭代提前终止的奇怪行为。我的 php 版本是 5.6.3。

以下代码按预期打印数字 1 到 5...

$values = array(1, 2, 3, 4, 5);

    foreach ($values as $v)
        //$temp_variable = $v;
        echo "v: " . "$v" . "\n";

但是,如果我像这样取消注释带有临时变量的行,我们只会得到一次迭代!

$values = array(1, 2, 3, 4, 5);

    foreach ($values as $v)
        $temp_variable = $v;
        echo "v: " . "$v" . "\n";

这看起来非常奇怪。创建未使用的临时变量的行为如何导致我们的循环脱离-rails?任何建议将不胜感激,谢谢!

这并不奇怪,如果您不将代码包含在花括号中 {} 那么 foreach 只会执行紧跟其后的行:

foreach ($values as $v)
    $temp_variable = $v; //foreach ONLY runs this line in the loop
    echo "v: " . "$v" . "\n";

改为:

foreach ($values as $v) {
    $temp_variable = $v;
    echo "v: " . "$v" . "\n";
}

现在大括号内的所有内容都是循环的一部分。这与 PHP:

中的基本上所有其他控制结构相同
if($condition === TRUE)
    echo 'True.'; //this line will run if the statement is true.
else
    echo 'False'; //only this line will run if the statement is false.
echo 'Something else'; //this line will run no matter what, but only once.