好的,所以我是新的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!";
?>
答案 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;