逻辑OR在if语句中不起作用

时间:2011-03-22 20:19:31

标签: php logical-operators

这就是我所拥有的:

<?php if($row['id']!="9") echo "style=\"display:none\""; ?>  

很简单,当'id'不是9时,它应该放置style="dsplay:none"。这可以很好地完成工作,但我想包括'id'8,12和13。看起来很简单,只是添加了逻辑或像这样:

<?php if($row['id']!="8||9||12||13") echo "style=\"display:none\""; ?>

但它不再起作用,所以它始终放置style="dsplay:none"

我想反过来做这个

<?php if($row['id']=="4||5||6||11") echo "style=\"display:none\""; ?>

但是从未放置style="dsplay:none"这一次 这让我得出的结论是,逻辑或逻辑肯定存在问题。但它是什么?请让我知道,谢谢!

5 个答案:

答案 0 :(得分:3)

你想:

if($row['id']!= 8 && $row['id'] != 9 && $row['id'] != 12)

因为您目前的做法是将$ row['id']的值与字符串值"8||9||12||13"进行比较。

或者您可以执行以下操作:

if(in_array($row['id'], array(8, 9, 12)))

缩小条件。

答案 1 :(得分:2)

你不能那样做。

使用if($row['id'] == 4 || $row['id'] == 5 || ...)或使用in_array()if(in_array($row['id'], array(4,5,6,11)))

答案 2 :(得分:1)

我建议你写一下

<?php if(in_array($row['id'], array(8, 9, 12, 13)) /* ... */; ?>

答案 3 :(得分:1)

您正在以不起作用的方式将数字与字符串进行比较。例如。 $row['id']的{​​{1}}不等于字符串1

您可以使用in_array函数检查数组中是否存在值:

"4||5||6||11"

逻辑OR(if(!in_array($row['id'], array(4, 5, 6, 11)) echo ' style="display:none"'; )在字符串中不起作用。

答案 4 :(得分:0)

这不符合逻辑,或者是字符串文字。但是De Morgan

if(($row['id']!="8") && $row['id']!="9" && ...