新的php标记,为什么这是标准的做法

时间:2013-08-24 17:33:48

标签: php if-statement

好的,所以我是新的PHP但慢慢了解它。我有一个问题。在下面的示例中,我可以使用不同的标记。其中一个有{},一个没有。为什么会这样?有人可以解释一下。

使用

<?php
    $guess = 7;
    $number = 7;

    if ( $guess < $number ){
    echo "Too low!";
    }elseif ($guess > $number){
    echo "Too high!";
    }else {
    echo "You win!";
    }

  ?>

使用出

<?php
    $guess = 7;
    $number = 7;

    if ( $guess < $number )
    echo "Too low!";
    elseif ($guess > $number)
    echo "Too high!";
    else 
    echo "You win!";

  ?>

5 个答案:

答案 0 :(得分:3)

这不是PHP独有的,它是条件速记。如果从if语句中省略{},则只考虑下一行代码(在;之前)。

就我个人而言,这对我更有意义:

<?php
    $guess = 7;
    $number = 7;

    if ($guess < $number) echo "Too low!";
    elseif ($guess > $number) echo "Too high!";
    else echo "You win!";
?>

答案 1 :(得分:1)

这是非常标准的语言。基本上,如果if语句后面有一个行,则只能省略括号。如果有多个,您将收到错误。

答案 2 :(得分:0)

通常,大括号是可取的(类似的语法用于多种语言,例如Java,C ++,Javascript等)。

  • 如果没有括号,它将作为块的一部分运行代码,直到它到达分号。当您只想在块中运行单行代码时,可以将其用作速记。但是,添加第二行会破坏您的代码并且很难调试,因为它通常不会产生错误。例如:

    $b = "hello";
    if ($foo)
        $a = "hello";
        $b = "goodbye";
    

    在这种情况下,$ b将始终等于“再见”,但它是完全有效的代码。

  • 使用括号,它将运行那里的所有内容。

答案 3 :(得分:0)

这是一个可以在很多语言中找到的概念:如果块中只有一个语句,则可以省略大括号。块甚至是一个语句,因此这些代码是等效的:

for(...)
    if($b)
        $res = true;


for(...) {
    if($b) {
        $res = true;
    }
}

答案 4 :(得分:0)

这是因为你在if之后只包含一个行语句,在这种情况下,要么将它们分组为大括号,要么不重要。因为翻译人员会毫无疑问地理解它。

只是if中只有一个语句的快捷方式。

当我们在if内有许多陈述时,我们需要{}来表示如果出现这种情况则必须执行所有陈述。

例如:

while()
if()
statement 1;
else
statement 2;

他们都将完美地工作..

但是当它得到像这样的条件时;

while()
if()
statement 1;
statement ABC;
Statement DEF;
else
statement 2;

然后它会显示错误!

所以为了让错误飞起来;)

只需使用括号:

 while() {
if() {
statement 1;
statement ABC;
Statement DEF;
 } else {
statement 2; }

您还可以使用 if,endif

例如

  while() :
if() :
statement 1;
statement ABC;
Statement DEF;

else :
statement 2;

 endif;
endwhile;