2012-09-21 3 views
0

나는 이것을 파악하려고 잠시 동안 머리를 긁적 거리고 있습니다.값이 설정되어 있으면 확인하십시오. 무시하십시오.

나는 같은 모양의 배열을 가지고 ...

내가 반환되는 모든 책> = 최소 가격과 < = 최대 가격 있는지 확인하기 위해 확인해야
$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 문에서 무엇을 변경할 수 있습니까? 중 하나 분 가격은 설정하지 말아야하거나이어야합니다

+0

!$param['minPrice']에 관련된 부분은 확인을 보이는 부정 할 필요가있다. 이것이 올바르게 작동하지 않으면 고장을 일으켜 디버깅하십시오. – Jon

+0

@ 존 나는 아마도'$ param [ 'minPrice'] && $ book [ 'price'] = = $ param [ 'minPrice'])''를 썼던 부분이'$ param [ 'minPrice']'를 false로 설정할 수 있습니다. false로 설정하면 사용자가 가격에 따라 검색을 제한하고 싶지 않다는 의미보다, if가 전달할 수 있어야하는 경우보다 문 –

+0

아, 미안하지만, 내 실수. 다시 보면서. – Jon

답변

1

당신은

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

대신

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

이이 진술 한 논리를 다음과 같이 읽을처럼 읽을 부분을 재구성 할 필요가 책 가격보다 작거나 같은

+0

내가 그 대답을 쓰자마자, 내가해야 할 일이 무엇인지 이해했다. 어쨌든 나는 아직도 너에게 감사해야만한다. –

+0

이것은 또한 올바른 해결책이다 –

+2

고무 오리 디버깅 :) –

0

당신은 단지 조건이 $param['minPrice']

관련 문제