PHP使用OR但在两种情况都为真时避免运行

时间:2013-08-01 17:01:27

标签: php

我遇到了问题。

我正在使用递归函数来传递大小写以运行到另一个函数。

问题是我正在做以下事情:

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

仅当$case == 1 OR仅在$matching > 0$case == NULL

时才'做某事'

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

事实上,如果$case == 1$matching > 0无论如何都会运行'做某事',即使它不应该这样做,因为我说它只在$matching > 0时运行'做某事'如果$casealso == NULL

怎么了?

如何告诉PHP仅在$case == 1时运行,或仅在$matching > 0$case == NULL时运行?

3 个答案:

答案 0 :(得分:3)

使用XOR logical operator(XOR来自eXclusive OR):

if ($case == 1 xor ($matching > 0 && $case == null)) { ... }

答案 1 :(得分:2)

在PHP中,&&先于||,所以你需要添加括号:

($case == 1 || (count($matching) == 0 && $case == NULL) )

答案 2 :(得分:0)

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

if ($case == 1 || (count($matching) > 0 && $case == NULL)){
}