2011-10-07 68 views
0

我正在做这个平等的声明,它不工作。这是在一个中做两个平等的陈述的正确方法吗?

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 

回答

2

你需要做的:

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

或者:

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

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

x || y 
x && y 
x && (y || z) 
x || (y && z) 
+0

代数是考虑这一点的好方法,因为你也可以这样做(尽管很少需要)*如果满足这些条件中的N个*通过添加条件结果并测试整个if(($ a == $ b)+ ($ a == $ c)+($ a == $ d)> = 2)',如果* a *等于至少2个这些其他值。 – DampeS8N

2

应该是:

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

谢谢!如果$ 2是空的,我怎么能包含一个给用户一个错误的方法... – AAA

+0

确定它是我做的== === – AAA

+1

bool空的(混合$ var) – MasterCassim

1

你需要用两个条件中的第一个if语句中附加括号:

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

没有,问题是在第一线。

做:

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

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

批评的一面位:

这些变量名是非常糟糕的,因为他们没有解释这是怎么回事上的任何东西。与文件名称相同。

可爱的请在糖顶部,修理您的缩进(检查draevor的体面缩进的答案)。习惯于立即进行适当的缩进,因为稍后会变得更加习惯改变的练习。当其他人开始使用你的代码时,如果你保持这样的缩进,他们会诅咒你的名字。它的可读性确实很重要。

+0

缩进意味着解释你在做什么? – AAA

+1

@AAA:不,缩进是每行之前放置的空格(空格或制表符)。看看你的代码,然后是MasterCassim,然后是draevor's。请注意,他们如何将这些行向右移动到if/else语句之下的事物的右侧。 – Teekin

+1

确定感谢您的建议! – AAA