我遇到了问题。
我正在使用递归函数来传递大小写以运行到另一个函数。
问题是我正在做以下事情:
if ($case == 1 || count($matching) == 0 && $case == NULL)
do something....
仅当$case == 1
OR仅在$matching > 0
和$case == NULL
看起来PHP没有正确理解它。
事实上,如果$case == 1
和$matching > 0
无论如何都会运行'做某事',即使它不应该这样做,因为我说它只在$matching > 0
时运行'做某事'如果$case
是also == NULL
。
怎么了?
如何告诉PHP仅在$case == 1
时运行,或仅在$matching > 0
和$case == NULL
时运行?
答案 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)){
}