抱歉,我对php很新。
这样的事情可能吗?
if ( if ($clauseA) { A } if ($clauseB) { || B } ) {
// Do Stuff
}
我想要做的是如果$ clauseA为true,包括A in条件,如果$ clauseB为true,则包括|| B(OR和B)处于状态。
有没有可靠的方法来实现这一目标?
答案 0 :(得分:2)
看起来你正试图这样做....
代码:
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
}