我只是浏览一个论坛,有人问他们在网上找到的PHP文件。它在代码中有几个这样的位置:
if ($REMOTE_ADDR == "") $ip = "no ip";
else $ip = getHostByAddr($REMOTE_ADDR);
如果条件为真,我一直认为需要括号来包含你想要做的事情。是否有其他替代方案,例如,如果它在同一条线上,则不是吗?
还有另一条这样的路线:
if ($action != ""):
mail("$adminaddress","Visitor Comment from YOUR SITE",
我的直觉是说这不起作用,但我也不知道它是否是一个过时的PHP文件,它曾经有用吗?
答案 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)
是的,允许排除大括号,虽然我多次听说过不使用该语法的两个原因:
此外,是的,冒号语法有效。可以在此处找到替代方案: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
我想不出任何需要这种语言的语言