需要PHP条件,括号吗?

时间:2008-12-19 15:22:26

标签: php brackets conditional

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

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

如果条件为真,我一直认为需要括号来包含你想要做的事情。是否有其他替代方案,例如,如果它在同一条线上,则不是吗?

还有另一条这样的路线: if ($action != ""): mail("$adminaddress","Visitor Comment from YOUR SITE",

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

7 个答案:

答案 0 :(得分:66)

你可以做if if这样的陈述:

<?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;
?>



使用替代语法,您也可以脱离解析模式,如下所示:

<?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;
?>

答案 1 :(得分:9)

更详细一点,大括号是可选的原因是语法如下:

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

BLOCK可以是一个声明:

foo();

或者它可以是括号括起来的一组陈述:

{
    foo();
    bar();
}

答案 2 :(得分:2)

在我看来

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

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

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

答案 3 :(得分:2)

9年过去了,我很惊讶没有人提到ternary operator

$ip = ($REMOTE_ADDR == "") ? "no ip" : getHostByAddr($REMOTE_ADDR);

关于分配恕我直言的要清楚得多-因为它像通常的变量分配一样导致分配了变量。

答案 4 :(得分:1)

大括号(非括号)在PHP中是可选的,与大多数类C语法一样。也许你在考虑Perl;对于那种形式的if语法,它们是必需的。

冒号是PHP支持的另一种控制结构形式。我讨厌它,但有些人(特别是模板系统设计师,显然)喜欢它。

答案 5 :(得分:0)

是的,允许排除大括号,虽然我多次听说过不使用该语法的两个原因:

  1. 阅读起来比较困难。另一位程序员不太明显。
  2. 如果你想在if中加入一些东西,那么你需要在第一次编码之后添加更难的大括号,因为大多数编辑都会为你添加大括号。
  3. 此外,是的,冒号语法有效。可以在此处找到替代方案:http://php.net/manual/en/control-structures.alternative-syntax.php

答案 6 :(得分:-3)

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

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