0

对不起,我对php很陌生。

这样的事情可能吗?

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

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

有什么可靠的方法可以实现这一目标吗?

4

6 回答 6

2

看起来你正在尝试这样做......

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

代码:

if (($clauseA && A) || ($clauseB && B)) {
    // Do Stuff
}
于 2013-06-13T11:43:57.053 回答
0

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

and( )也是如此&&,如果第一个表达式的计算结果为 false,它将不会继续。

更新: 事实上,我想我刚刚理解了这个问题。:)

if ( ($clauseA && A) || ($clauseB && B) ) {
    // A and B will only be checked if the appropriate clause is true, otherwise they are ignored.
}
于 2013-06-13T11:41:56.923 回答
0

取决于以下几点: $clauseA 可能为真和/或 $clauseB 可能为真,但两者都可能为假:

if ((($clauseA || $clauseB) && A) || ($clauseB && B))
{ 
    // Doing some stuff     
}
于 2013-06-13T11:59:19.723 回答
0

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

于 2013-06-13T11:43:52.563 回答
0

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

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

或者它的一些变化,这取决于你到底想要做什么。&&关键是,您可以使用and的组合来表达它||,而无需if.

于 2013-06-13T11:44:00.340 回答
0

如果 A 和 B 是只有在 $clauseA 或 $clauseB 也为真时才必须为真的布尔条件,只需像这样重写你的条件:

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

我刚刚应用了德摩根定律 ( http://en.wikipedia.org/wiki/De_Morgan 's_laws) 来实现这一点。

于 2013-06-13T11:46:23.270 回答