PHP的条件,括号需要?

我只是浏览一个论坛,有人问他们在网上find的PHP文件。 代码中有几个这样的点:

if ($REMOTE_ADDR == "") $ip = "no ip"; else $ip = getHostByAddr($REMOTE_ADDR);

如果条件成立,我一直认为括号需要包含你想要做的事情。 有没有其他的select,比如,如果它不在同一行?

还有另外一行: if ($action != ""): mail("$adminaddress","Visitor Comment from YOUR SITE",

我的直觉是说这不起作用,但我也不知道它是否是一个过时的PHP文件,它曾经工作?

你可以这样做:

 <?php if ($something) { echo 'one conditional line of code'; echo 'another conditional line of code'; } if ($something) echo 'one conditional line of code'; if ($something) echo 'one conditional line of code'; echo 'a NON-conditional line of code'; // this line gets executed regardless of the value of $something ?> 

然后你也可以用另一种语法来编写if – else:

 <?php if ($something): echo 'one conditional line of code'; echo 'another conditional line of code'; elseif ($somethingElse): echo 'one conditional line of code'; echo 'another conditional line of code'; else: echo 'one conditional line of code'; echo 'another conditional line of code'; endif; ?> 

使用替代语法,您也可以像这样parsing模式:

 <?php if ($something): ?> one conditional line of code<br /> another conditional line of code <?php else: echo "it's value was: $value<br />\n"; ?> another conditional line of code <?php endif; ?> 

但这真的很乱,我不会推荐它的使用(除了模板逻辑)。

并完成:

 <?php $result = $something ? 'something was true' : 'something was false'; echo $result; ?> equals <?php if ($something) { $result = 'something was true'; } else { $result = 'something was false'; } echo $result; ?> 

为了进一步细化,大括号是可选的原因是语法如下所示:

 if(CONDITION) BLOCK [elseif(CONDITION) BLOCK] [else BLOCK] 

BLOCK可以是一个单独的声明:

 foo(); 

或者它可以是一个大括号的语句组:

 { foo(); bar(); } 

我的想法是

 if ($REMOTE_ADDR == "") $ip = "no ip"; else $ip = getHostByAddr($REMOTE_ADDR); 

是有效的,但比以下更难以阅读:

 if ($REMOTE_ADDR == "") { $ip = "no ip"; } else { $ip = getHostByAddr($REMOTE_ADDR); } 

大括号(不是括号)在PHP中是可选的,就像大多数C语言一样。 也许你正在考虑Perl; 他们需要那里,如果语法的forms。

冒号是PHP支持的一种替代控制结构forms。 我讨厌它,但有些人(特别是模板系统devise者)显然喜欢它。

是的,不包括大括号是允许的,虽然很多时候我听说了2个不使用该语法的理由:

  1. 阅读起来很难。 另一个程序员不太明显。
  2. 如果你想在if里添加一些东西,那么在你编写代码之后,你需要添加更难的大括号,因为大多数编辑器都会为你添加大括号。

另外,是的,冒号语法是有效的。 替代品可以在这里find: http : //php.net/manual/en/control-structures.alternative-syntax.php

 brackets are needed to enclose what you want to do if the condition is true 

我想不出任何需要这样的语言