PHP无括号IF条件不接受多个语句


PHP bracket less IF condition not accepting more than one statement

我从来都不喜欢控制结构中的括号,直到今天我才意识到它是如何只接受括号内的一个语句的。如果条件为less if,如果我有多个语句,它将抛出语法错误。PHP就是这样工作的,还是我的IDE出了问题?

很明显,这个错误很明显,但我只想确保这是正常的。

如果你有任何其他链接到其他替代语法,请告诉我。

Bellow只是我从正在做的一个项目中粘贴的东西,也是语法错误的例子。

if($this->reel3 = 1)
   parent::addCash($this->$bet*2);
   print(parent::getCash()); // < Line throwing the syntax error
else
   // TODO

编辑(进一步)

在看了一些答案和评论后,我想知道在专业环境中是如何做到的,我知道这更多的是关于品味,但我想从专业人士那里知道语法的风格是否重要?

if(condition)
{
   //something
} else {
   //something
}

比更好

if(condition):
   //something
else:
   //something
endif;

或者以任何其他方式编写相同的代码?

php就是这样工作的。如果你不在If语句周围加括号,那么只有下一个语句在If块中,所有其他后续语句都在If块之外。但由于后面有一个else块,你会得到一个错误。

(顺便说一句:你在if块中进行赋值,所以这总是真的)

看看这两个例子:

if($this->reel3 = 1)
   parent::addCash($this->$bet*2); //In the if statement
   print(parent::getCash());  //Outside the if statement
else

同:

if($this->reel3 = 1) {
   parent::addCash($this->$bet*2);
}
   print(parent::getCash());
 //^^^^^ I think here it's more clear to see that this will give you a error, since it's between the if and else block which is not allowed
else { }

有关控制结构的更多信息,请参阅手册:http://php.net/manual/en/control-structures.if.php

看看这个问题的答案:

PHP条件,需要括号吗?

是的,这是PHP,而不是IDE!

这对于所有使用括号而不是缩进来指定代码块的编程语言来说都是非常正常的。如果没有括号,解释器就无法知道哪些行是if块的一部分,哪些行不是。单行if块是一个方便的快捷方式:如果不包括任何括号,PHP和许多其他语言一样,会将if语句后面的单行作为if块的主体。

注意,PHP对if语句也有另一种语法,使用冒号而不是括号,但这是另一天的故事。