这是在一个中做两个平等陈述的正确方法吗?

时间:2011-10-07 14:53:08

标签: php equals

我正在做同样的陈述而且它不起作用。

if ( $1 === $one ) && ( $2 == $two ) {
    require("one.php");
} elseIF($2 === $two) {
    require("two.php");
}else{ 
    require("three.php");
    die("");
}

这是我得到的错误消息:

   PHP Parse error:  syntax error, unexpected T_BOOLEAN_AND 

5 个答案:

答案 0 :(得分:2)

应该是:

if (( $1 === $one ) && ( $2 == $two )) {
    require("one.php");
} elseIF($2 === $two) {
    require("two.php");
} else { 
    require("three.php");
    die("");
}

答案 1 :(得分:2)

你需要这样做:

if (( $1 === $one ) && ( $2 == $two )) {

或者:

if ( $1 === $one  &&  $2 == $two ) {

请记住将它作为代数放在括号中,'IF @语句需要作为一个整体进行评估,并且要评估的所有条件都包含在(和)中。根据您希望进行评估的复杂程度(以公式方式构建),您可以将后续标准用括号括起来,例如。

x || y
x && y
x && (y || z)
x || (y && z)

答案 2 :(得分:1)

您需要将第一个IF语句中的两个条件包含在附加括号中:

if (( $1 === $one ) && ( $2 == $two ))

答案 3 :(得分:1)

if (( $1 === $one ) && ( $2 == $two )) {
    require "one.php";
} elseif ($2 === $two) {
    require "two.php";
} else { 
    require "three.php";
    die("Some message");
}

答案 4 :(得分:1)

不,问题出在第一行。

做的:

if ($1 === $one && $2 == $two) { ...

“if”条件始终在单个“()”内。您可以嵌套它们,但if条件在第一个关闭后停止。所以if (($1 === $one) && ($2 == $two))也是有效的,但在这种情况下,除非你发现它提高了可读性,否则不需要嵌套它。

对方面有点批评:

这些变量名称非常糟糕,因为它们没有解释发生了什么。与文件名相同。

请相当,请将糖放在上面,修复你的缩进(查看draevor的答案,以获得合适的缩进)。习惯于立即进行适当的缩进,因为以后变得更难以适应变化的练习。当其他人开始使用您的代码时,如果您继续这样缩进,他们会诅咒您的名字。它的可读性确实很重要。