2017-06-14 47 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

太棒了,謝謝!我想我已經花了太多的時間與蟒蛇... –