我正在尝试迭代一个简单的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";
这似乎非常奇怪。创建一个未使用的临时变量的行为怎么能导致我们的循环走出轨道?任何建议将不胜感激,谢谢!
答案 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.