【问题标题】:PHP bracket less IF condition not accepting more than one statementPHP括号少IF条件不接受多个语句
【发布时间】:2015-05-02 04:38:41
【问题描述】:

我从来都不喜欢控制结构中的括号,直到今天我才意识到它如何只接受一个括号内的语句,如果条件少于一个,如果我有多个语句,它将引发语法错误。这是 PHP 的工作方式还是我的 IDE 有问题?

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

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

Bellow 只是我从正在做的项目中粘贴的内容和语法错误示例。

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

编辑(进一步)

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

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

优于

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

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

【问题讨论】:

  • 这就是为什么你应该总是为 if 语句使用括号
  • 习惯括号。如果您对专业地使用代码感兴趣,您会看到更多。
  • if 构造的“冒号形式”通常被认为适用于模板,因为endif 在 HTML 中更明显。然而,这只是一个约定,如果您愿意,您可以在任何地方使用任何一种形式。

标签: php control-structure


【解决方案1】:

这就是 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

【讨论】:

  • 我发誓我查看了该页面,并没有在贡献者说明中找到替代语法。感谢您的链接!
  • Rizier123 我又更新了一个问题的答案
  • @Andre 我认为当你创建模板并且混合了 html 和 php 时,替代语法更常用,但你可以随意使用它或喜欢它
【解决方案2】:

看看这个问题的答案:

PHP conditionals, brackets needed?

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

【讨论】:

  • 如果您认为该问题是重复的(我同意确实如此),那么在您的代表允许的情况下,只需在问题下方做一个注释,或投下密切的一票即可。
【解决方案3】:

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

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

【讨论】:

    猜你喜欢
    • 2012-07-02
    • 2012-05-03
    • 2013-12-17
    • 2016-02-28
    • 1970-01-01
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    相关资源
    最近更新 更多