我正在尝试在单个 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。