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


How to use an IF statement to ensure one is always true, and either of the others is true

我正在尝试在单个 IF 语句中执行此操作以避免重复代码,我想知道是否有可能做我想做的事情。

我最初有这段代码来运行不等于"15"的所有类别的代码,现在我需要它不适用于类别 15 和 57。

原始代码:

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

新代码(总体思路(:

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

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

以下代码表示,当$level等于 1 且 $category_id 不等于 15, 57 中的任何一个时,if将为 true。

if ($level == 1 && !in_array($category_id, array(15, 57)))

看看这里: in_array

它应该是:

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

你可以只使用多个和条件:

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

当前代码失败的原因($level==1时将始终返回 true(是因为$category_id永远不能同时是两个值。

让我们$category_id ==15条件的左侧($category_id!=15 || $category_id!=57)将计算为 false (15 != 15) == false因此将评估右侧(15 != 57) == true导致整个语句的计算结果为 true。

让我们$category_id ==57条件的左侧($category_id!=15 || $category_id!=57)将计算为 true (57 != 15) == true因此永远不会计算右侧,从而导致整个语句的计算结果为 true。