2012-10-02 87 views
0

我想要实现的是嵌套的条件,如if ((a = true && b = true) or (c = true && d = true)) {...}。这似乎不适合我。PHP嵌套如果条件

为了进一步解释:我有什么我们可以称之为一个“顶”两个变量,以及在什么我们可以称之为“底部”的两个变量。我需要做的是执行代码,如果变量在'top'和'bottom'都是真的。

为了更简洁地说明:

if ((t1 = true && b1 = true) or 
    (t1 = true && b2 = true) or 
    (t2 = true && b1 = true) or 
    (t2 = true && b2 = true) 
) { 
    ...do some stuff... 
} 

我很想把它称作“为网格的问题有条件的声明” ......但它不是一个真正的网格的问题...但事实并非排序看起来像一个格子,如果你画了它|X| ... s'yeah,如果你能告诉我一个很好的方法来做到这一点,你真了不起,而且如果你能告诉我我应该称之为什么,那你超级棒。

回答

3

=用于分配,==被用来测试平等,===被用于测试平等和公平的类型。您需要使用=====,具体取决于t1,t2,b1,b2是否已经是布尔值或其他。也是亚当说的东西,除了or是完全有效的。

+1

嗯,我感觉有点傻;早些时候尝试将它们检查为'!= false',但并未完全通过该函数。丹非常感谢你的清理。 –

2

您需要使用两个等号==,而不是=。另外,你的变量需要在它们前面有$。而你的“或”应该是||

逻辑正常。

它应该是这样的:

if (($t1 == true && $b1 == true) || 
    ($t1 == true && $b2 == true) || 
    ($t2 == true && $b1 == true) || 
    ($t2 == true && $b2 == true) 
) { 
    ...do some stuff... 
} 
+1

从技术上讲,他可以使用'或',但我同意,这样做会很荒谬。 – Brad

+0

我不知道。每天学些新东西 :)。 http://php.net/manual/en/language.operators.logical.php –

+0

为什么可笑? –

0

改变条件

if (($t1 == true && $b1 == true) or 
($t1 == true && $b2 == true) or 
($t2 == true && $b1 == true) or 
($t2 == true && $b2 == true) 
) 

=是赋值运算符==是比较操作符。