有条件的条件......可能吗?

时间:2013-06-13 11:38:59

标签: php

抱歉,我对php很新。

这样的事情可能吗?

if ( if ($clauseA) { A } if ($clauseB) { || B } ) {
    // Do Stuff
}

我想要做的是如果$ clauseA为true,包括A in条件,如果$ clauseB为true,则包括|| B(OR和B)处于状态。

有没有可靠的方法来实现这一目标?

6 个答案:

答案 0 :(得分:2)

看起来你正试图这样做....

  1. 如果条款A为真,则将A评估为条件的一部分,或者
  2. 如果条款B为真,则将B评估为您的条件的一部分:
  3. 代码:

    if (($clauseA && A) || ($clauseB && B)) {
        // Do Stuff
    }
    

答案 1 :(得分:0)

逻辑or,别名||,始终以这种方式运作。如果第一个条件表达式的计算结果为true,则不会测试或执行第二个条件表达式。

同样适用于and&&),如果第一个表达式的计算结果为false,则不会继续。

<强>更新 事实上,我想我只是理解了这个问题。 :)

if ( ($clauseA && A) || ($clauseB && B) ) {
    // A and B will only be checked if the appropriate clause is true, otherwise they are ignored.
}

答案 2 :(得分:0)

if ($clauseA) { if ($clauseB) { B } else { A } // Do stuff }

答案 3 :(得分:0)

在布尔逻辑中,这表示为:

if (($clauseA && $a) || ($clauseB && $b))

或其中的一些变体,取决于您想要做什么。关键是,您可以使用&&||的组合来表达它,而不是if

答案 4 :(得分:0)

如果A和B是布尔条件,如果$ clauseA或$ clauseB也为真,则只需要为真,只需重写你的条件:

if( (!$ClauseA || $A) && (!$ClauseB || $B)) {
    // Do Stuff
}

我刚刚应用了De Morgan的法律(http://en.wikipedia.org/wiki/De_Morgan's_laws)来实现这一目标。

答案 5 :(得分:0)

取决于以下内容: $ clauseA可能为true和/或$ clauseB可能为true,但两者都可能为false:

if ((($clauseA || $clauseB) && A) || ($clauseB && B))
{ 
    // Doing some stuff     
}