只是关于以下循环的问题和最后的括号(我刚开始学习PHP所以它可能是一个菜鸟问题)。 我写了下面的代码,它没有用:
<?php
function maximum(){
$wieviele = func_num_args();
$arg = func_get_args();
$first = $arg[0];
for ($i = 1;$i < $wieviele;$i++){
if ($first < $arg[$i])
$first = $arg[$i];
return $first;
}
}
echo maximum(1,4,64,9);
?>
现在我在阅读的书中检查了它,解决方案是以下代码,除了最后的括号外几乎相同。
<?php
function maximum(){
$wieviele = func_num_args();
$arg = func_get_args();
$first = $arg[0];
for ($i = 1;$i < $wieviele;$i++)
if ($first < $arg[$i])
$first = $arg[$i];
return $first;
}
echo maximum(1,4,64,9);
?>
现在我很想知道为什么它只能在没有FOR-loop的括号的情况下工作。
谢谢
答案 0 :(得分:3)
如果你有一个控制结构,比如for循环或if语句,并且你后面没有包含一组括号,那么只有下一行被认为是在控制结构中。
所以当你有
时 for ($i = 1;$i < $wieviele;$i++)
if ($first < $arg[$i])
$first = $arg[$i];
return $first;
这意味着
for ($i = 1;$i < $wieviele;$i++){
if ($first < $arg[$i]){
$first = $arg[$i];
}
}
return $first;
也就是说,它在适当时将$first
设置为$arg[$i]
,并在循环结束后返回。
在您的代码中,您有
for ($i = 1;$i < $wieviele;$i++){
if ($first < $arg[$i])
$first = $arg[$i];
return $first;
}
相当于
for ($i = 1;$i < $wieviele;$i++){
if ($first < $arg[$i]){
$first = $arg[$i];
}
return $first;
}
因此,您将进入循环的第一次迭代,检查条件,然后返回$first
。也就是说,在第一次迭代后返回,而不是在循环完成时返回。
关于省略/包括括号的建议,应始终尽可能明确,以使代码的目的和效果尽可能直观。
答案 1 :(得分:2)
您需要在第一个代码块的return $first;
循环之外添加for
才能使其正常运行。
第一个代码无效,因为您提前返回值
使用max()
代替......
$array = array(1,4,64,9); //<--- Add elements to your array
echo max($array); // 64
答案 2 :(得分:0)
建议甚至对loops.if-statements的一行主体使用括号。
与此代码的括号相同
for ($i = 1;$i < $wieviele;$i++)
if ($first < $arg[$i])
$first = $arg[$i];
是
for ($i = 1;$i < $wieviele;$i++)
{
if ($first < $arg[$i])
{
$first = $arg[$i];
}
}