1

好的,我对 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!";

  ?>
4

5 回答 5

3

这不是 PHP 独有的,它是一个条件简写。如果你在 if 语句中省略{and },那么只有下一行代码被认为在里面(直到;被看到)。

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

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

    if ($guess < $number) echo "Too low!";
    elseif ($guess > $number) echo "Too high!";
    else echo "You win!";
?>
于 2013-08-24T17:38:12.903 回答
1

随着语言的发展,这是非常标准的。本质上,如果语句后面只有一行,只能省略括号。if如果有多个,你会得到一个错误。

于 2013-08-24T17:39:27.187 回答
0

一般来说,大括号是可取的(在许多语言中使用类似的语法,例如 Java、C++、Javascript 等)。

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

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

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

  • 使用括号,它将在那里运行所有内容。
于 2013-08-24T17:39:55.360 回答
0

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

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


for(...) {
    if($b) {
        $res = true;
    }
}
于 2013-08-24T17:40:08.070 回答
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;
于 2013-08-24T17:41:56.703 回答