PHP包含较少的IF条件不接受多个语句

时间:2015-03-01 21:39:09

标签: php control-structure

我从来没有成为控制结构中括号的粉丝,直到今天我才意识到它如何只接受一个括号内的一个语句,如果我有多个语句就会抛出语法错误。这是PHP的工作方式,还是我的IDE出错?

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

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

贝娄只是我从项目中粘贴的东西和语法错误的例子。

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

编辑(FURTHERMORE)

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

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

优于

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

或编写同一段代码的任何其他方式?

3 个答案:

答案 0 :(得分:3)

这就是php的工作原理。如果不在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

答案 1 :(得分:2)

看一下这个问题的答案:

PHP conditionals, brackets needed?

是的,它是PHP,而不是你的IDE!

答案 2 :(得分:2)

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

注意PHP确实有if语句的替代语法,使用冒号而不是括号,但这是另一天的故事。