我遇到了一个问题。
我使用的是一个递归函数,它将把case传递给另一个函数运行。
问题是我正在做以下事情:
if ($case == 1 || count($matching) == 0 && $case == NULL)
do something....
所以"做某事"仅当$case == 1
或仅当$matching > 0
和$case == NULL
看起来PHP没有正确理解它。
事实上,如果$case == 1
和$matching > 0
,它无论如何都会运行"做点什么",即使它不应该运行,因为我对它说,只有当$case
是also == NULL
时,当$matching > 0
时才运行"做些什么"。
怎么了?
我如何告诉PHP只在$case == 1
时运行,或者仅在$matching > 0
和$case == NULL
时运行?
使用XOR逻辑运算符(XOR来自eXclusive OR):
if ($case == 1 xor ($matching > 0 && $case == null)) { ... }
在PHP中,&;优先于||,因此需要添加括号:
($case == 1 || (count($matching) == 0 && $case == NULL) )
试试这个,这将确保最后两个条件组合在一起,并且这两个条件的结果为真,当且仅当它们都为真:
if ($case == 1 || (count($matching) > 0 && $case == NULL)){
}