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

时间:2017-06-14 23:52:14

标签: php for-loop php-5.6

我正在尝试迭代一个简单的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";

enter image description here

但是,如果我用临时变量取消注释该行,就像这样,我们只进行一次迭代!

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

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

enter image description here

这似乎非常奇怪。创建一个未使用的临时变量的行为怎么能导致我们的循环走出轨道?任何建议将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:4)

这并不奇怪,如果你不包含花括号{}中的代码,那么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.