非常简单的问题......我有一个if语句不起作用的问题?我想要的只是声明,如果$ quantity不等于20,或40,或80,或160这里显示。
if($quantity != '20' || $quantity !='40' || $quantity != '80' || $quantity != '160')
{
echo "here";
}
任何建议将不胜感激。 :)
答案 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,因此满足条件。
答案 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";
}
?>