如果设置了值,则进行检查,否则忽略

时间:2012-09-21 14:50:06

标签: php if-statement

我一直在摸不着头脑,试图解决这个问题。

我有一个类似......的数组

$param = array(
   "conditionType"  => $_GET['conditionType']   ? strtolower($_GET['conditionType'])        : "all",
   "minPrice"       => $_GET['minPrice']        ? $_GET['minPrice']                         : false,
   "maxPrice"       => $_GET['maxPrice']        ? $_GET['maxPrice']                         : false,
);

我需要检查以确保返回的所有图书都是> =最低价格和< =最高价格,但如果这些用户选择不指定最低价格或最高价格,则if语句需要忽略此项目检查。

   if(($param['conditionType'] == "all" 
   || ($param['conditionType'] == "new" && strtolower($book['sub_condition']) == "new")
   || ($param['conditionType'] == "used" && strtolower($book['sub_condition']) != "new"))

   && ($param['minPrice'] && $book['price'] >= $param['minPrice']) 
   && ($param['maxPrice'] && $book['price'] <= $param['maxPrice'])
   && $book['price'] != "null"
   ){
      $books[] = array(
        "link"                      => $book['link'],
        "listing_condition"         => $book['sub_condition'],
        "listing_price"             => $book['price']
      );
   }

我可以在if语句中更改哪些内容以确保发生这种情况?

2 个答案:

答案 0 :(得分:1)

您需要重新构建类似

的部分
&& ($param['minPrice'] && $book['price'] >= $param['minPrice']) 

改为阅读

&& (!$param['minPrice'] || $book['price'] >= $param['minPrice']) 

这符合您陈述的逻辑:不应设置最低价格,或者必须小于或等于账面价格。

答案 1 :(得分:0)

您只需将此$param['minPrice']否定为!$param['minPrice']

即可