2017-06-14 83 views
2

我想通过一个简单的PHP数组迭代,并已运行到奇怪的行为,导致迭代提前终止。我的PHP版本是5.6.3。PHP的foreach循环无法迭代时使用临时变量

下面的代码打印数字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

这似乎非常怪异。如何创建一个未使用的临时变量导致我们的循环离开轨道?任何意见将不胜感激,谢谢!

回答

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. 
+0

你注意到了,速度相当快。做得好。 +1 – icecub

+1

太棒了,谢谢!我想我已经花了太多的时间与蟒蛇... –