1

我遇到了一个问题。

我正在使用一个递归函数,它将案例传递给另一个函数。

问题是我正在执行以下操作:

if ($case == 1 || count($matching) == 0 && $case == NULL)
    do something....

所以“做某事”仅当$case == 1OR 仅当$matching > 0$case == NULL

看起来 PHP 没有正确理解它。

事实上 if$case == 1并且$matching > 0它无论如何都会运行“做某事”,即使它不应该运行,因为我对它说$matching > 0只有当$caseis时才会运行“做某事” also == NULL

怎么了?

我如何告诉 PHP 仅当$case == 1或仅当$matching > 0AND时才运行$case == NULL

4

3 回答 3

3

使用XOR 逻辑运算符(XOR 来自异或):

if ($case == 1 xor ($matching > 0 && $case == null)) { ... }
于 2013-08-01T17:03:17.600 回答
2

在 PHP 中,&& 优先于 ||,因此需要添加括号:

($case == 1 || (count($matching) == 0 && $case == NULL) )
于 2013-08-01T17:05:17.680 回答
0

试试这个,这将确保最后两个条件组合在一起,并且当且仅当它们都为真时,这两个条件的结果为真:

if ($case == 1 || (count($matching) > 0 && $case == NULL)){
}
于 2013-08-01T17:03:21.297 回答