如何使用多个&& PHP If语句中的OR?

时间:2017-12-08 22:51:46

标签: php html

我如何调整此方法以使括号生效?

if (mysql_num_rows($printPricealertsdata) < 5 && ($_POST['pricetype'] == "pricebelow" && $_POST['price'] < $marketdata['priceusd']) OR ($_POST['pricetype'] == "priceabove" && $_POST['price'] > $marketdata['priceusd'])) {
   echo "success";
}else{
   echo "fail";
}

2 个答案:

答案 0 :(得分:0)

试试这个(不在每个条件周围放置括号):

if(mysql_num_rows($printPricealertsdata) < 5 && $_POST['pricetype'] == "pricebelow" && $_POST['price'] < $marketdata['priceusd']) OR $_POST['pricetype'] == "priceabove" && $_POST['price'] > $marketdata['priceusd']) {
   echo "success";
}else{
   echo "fail";
}

答案 1 :(得分:0)

如果你告诉我们你想要什么,以及你的代码得到了什么会更容易。但是,既然你让我猜,我认为你有时打印“成功”,即使行数是5或更多;你不想要那个。如果这是问题,你需要围绕你的OR条款括号,因为&amp;&amp;紧紧联系起来。 Check the manual表示不同运营商的优先级。

顺便说一句,你可以使用新的行和缩进来使你的代码更具可读性:

if ( mysql_num_rows($printPricealertsdata) < 5 
  && (
  ($_POST['pricetype'] == "pricebelow" && $_POST['price'] < $marketdata['priceusd']) 
  OR 
  ($_POST['pricetype'] == "priceabove" && $_POST['price'] > $marketdata['priceusd']) 
  )) {
   echo "success";
 } else {
   echo "fail";
 }