如果没有或声明

时间:2011-06-18 11:03:34

标签: php if-statement

非常简单的问题......我有一个if语句不起作用的问题?我想要的只是声明,如果$ quantity不等于20,或40,或80,或160这里显示。

if($quantity != '20' || $quantity !='40' || $quantity != '80' || $quantity != '160')
{       
echo "here";
}

任何建议将不胜感激。 :)

5 个答案:

答案 0 :(得分:6)

试试这个,它更干净(IMO):

if (!in_array($quantity, array(20, 40, 80, 160))
{
    echo "here";
}

否则只需将||替换为&&

答案 1 :(得分:3)

替换|| (或)由&& (和);)

这样你检查一下是否是20,然后你检查是否有40等等。所以当你有例如40时,第一次检查(!= 20)只返回True(因为你正在使用或者),它永远不会到达第二个或进一步检查。

答案 2 :(得分:3)

如果$quantity为40,则不是20,因此满足条件。

研究并理解http://en.wikipedia.org/wiki/De_Morgan%27s_Law

答案 3 :(得分:1)

如果您不希望$ quantity等于其中任何一个,您需要更改'||'或运营商与运营商'&&'。

答案 4 :(得分:0)

通过弄清楚你的算法,我更容易检查更高的数字。

迭代:

<?php
for ($i = 0; $i <= 3; $i++) {
  if ($quantity == pow(2,$i)*20) { echo "not here"; goto matched; }
}
echo "here";
matched:
?>

更多功能:

<?php
if (!in_array($quantity,
  array_map(
    function ($i) { return pow(2,$i)*20; },
    range(0,3)
  )
)) {
  echo "here";
} else {
  echo "not here";
}
?>