Php 如何使用IF语句来确保其中一个始终为真,而其他两个语句中的任何一个都为真

Php 如何使用IF语句来确保其中一个始终为真,而其他两个语句中的任何一个都为真,php,if-statement,Php,If Statement,我试图在一个IF语句中实现这一点,以避免重复代码,我想知道是否有可能实现我想做的事情 我最初使用此代码在所有不等于“15”的类别上运行代码,现在我需要它不适用于类别15和57 原始代码: if ($level==1 && $category_id!=15){ 新代码(总体思路): 编辑:如果投反对票,请解释原因。我已经测试了上面的代码,它总是返回false。以下代码意味着当$level等于1且$category\u id不等于15,57中的任何一个时,if将为true if (

我试图在一个IF语句中实现这一点,以避免重复代码,我想知道是否有可能实现我想做的事情

我最初使用此代码在所有不等于“15”的类别上运行代码,现在我需要它不适用于类别15和57

原始代码:

if ($level==1 && $category_id!=15){
新代码(总体思路):


编辑:如果投反对票,请解释原因。我已经测试了上面的代码,它总是返回false。

以下代码意味着当
$level
等于1且
$category\u id
不等于15,57中的任何一个时,
if
将为true

if ($level == 1 && !in_array($category_id, array(15, 57)))
看看这里:

应该是:

if ($level==1 && $category_id!=15 && $category_id!=57){

您可以只使用多个和标准:

if ($level==1 && $category_id!=15 && $category_id!=57){
当前代码失败的原因(当
$level==1
时总是返回true)是因为
$category\u id
不能同时为两个值

$category\u id==15
然后条件的左侧
($category\u id!=15 | |$category\u id!=57)
将求值为false
(15!=15)=false
因此将求值为右侧
(15!=57)==true
,从而使整个语句求值为true


$category\u id==57
然后条件的左侧
($category\u id!=15 | |$category\u id!=57)
将求值为true
(57!=15)==true
,因此右侧从未求值,导致整个语句求值为true。

您尝试过此代码吗?我没有。。我以为你不能在IF语句中添加子语句。。但现在我在想,如果它所做的只是检查其中一个是否为真,那么它应该能工作?@johncode我刚刚测试过它,它总是假的。@user2924019当然它总是
true
而不是
false
,以避免在if条件下有多个and语句,最好在_array()中使用由您要排除的值填充。不要忘记接受此问题的答案。如果可以,我通常会立即接受。如果不能,则下次我在网站上。
if ($level==1 && $category_id!=15 && $category_id!=57){