PHP:混淆FOR循环和2个括号

PHP:混淆FOR循环和2个括号,php,loops,for-loop,Php,Loops,For Loop,只是一个关于以下循环和最后括号的问题(我刚开始学习PHP,所以这可能是一个noob问题)。 我编写了以下代码,但它不起作用: <?php function maximum(){ $wieviele = func_num_args(); $arg = func_get_args(); $first = $arg[0]; for ($i = 1;$i < $wieviele;$i++){

只是一个关于以下循环和最后括号的问题(我刚开始学习PHP,所以这可能是一个noob问题)。 我编写了以下代码,但它不起作用:

        <?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循环括号的情况下工作


谢谢

您需要先添加
返回$first
之外,用于第一个代码块上的
循环,以使其正常工作

第一个代码不起作用,因为您过早地返回了值


为什么不简化一下呢? 改用

$array = array(1,4,64,9); //<--- Add elements to your array
echo max($array); // 64

$array=array(1,4,64,9)// 您需要先添加
return$first
之外,用于第一个代码块上的
循环,以使其正常工作

第一个代码不起作用,因为您过早地返回了值


为什么不简化一下呢? 改用

$array = array(1,4,64,9); //<--- Add elements to your array
echo max($array); // 64

$array=array(1,4,64,9)// 建议即使对于一行循环体也使用括号。if-statemnts

与此代码的大括号等效

for ($i = 1;$i < $wieviele;$i++)
if ($first < $arg[$i])
$first = $arg[$i];
($i=1;$i<$wieviele;$i++)的

如果($first<$arg[$i])
$first=$arg[$i];

($i=1;$i<$wieviele;$i++)的

{
如果($first<$arg[$i])
{
$first=$arg[$i];
}
}

即使对于一行循环体,也建议使用括号。if-statemnts

与此代码的大括号等效

for ($i = 1;$i < $wieviele;$i++)
if ($first < $arg[$i])
$first = $arg[$i];
($i=1;$i<$wieviele;$i++)的

如果($first<$arg[$i])
$first=$arg[$i];

($i=1;$i<$wieviele;$i++)的

{
如果($first<$arg[$i])
{
$first=$arg[$i];
}
}

如果您有一个控制结构,如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;
    }
($i=1;$i<$wieviele;$i++)的
{
如果($first<$arg[$i]){
$first=$arg[$i];
}
先返回$first;
}
因此,您将输入循环的第一次迭代,检查条件,然后返回
$first
。也就是说,您在第一次迭代之后返回,而不是在循环完成时返回


关于省略/包含方括号,我的建议是尽可能明确,以使代码的目的和效果尽可能直观。

如果您有一个控制结构,如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;
    }
($i=1;$i<$wieviele;$i++)的
{
如果($first<$arg[$i]){
$first=$arg[$i];
}
先返回$first;
}
因此,您将输入循环的第一次迭代,检查条件,然后返回
$first
。也就是说,您在第一次迭代之后返回,而不是在循环完成时返回


关于省略/包括括号,我的建议是尽可能明确,使代码的目的和效果尽可能直观。

请缩进代码。@Cheesebaron虽然我认为编辑代码使其看起来更好总是一件好事,但在这种情况下,保持原样可能更好。它显示了缩进和省略大括号在OP混乱中的作用。请缩进您的代码。@Cheesebaron尽管我认为编辑代码使其看起来更好总是一件好事,但在这种情况下,保持原样可能会更好。它显示了缩进和省略大括号在OP的混乱中起到了多大的作用。我没有让它变得更简单,因为这是一本书中给出的练习。但是thx。我没有把它简化,因为这是一本书中的练习。但是thx。