2012-01-19 3 views
1

입니다. 제가 루프를 돌고있는 테이크 어웨이 결과가 있습니다. 테이크 어웨이 객체에는 ID, 이름, 주소, 우편 번호, 거리, 마일 _ 비용, 피자, 중국어, 인도, 케밥 등의 속성이 있습니다. . 피자 메뉴가있는 경우 1 또는 0을 포함하지 않을 경우PHP에서 코드 로직 결과가

가장 가까운 피자, 중국, 인도 및 케밥 음식점을 판매하기 위해 결과를 필터링하고 싶습니다. 또한 결과를 필터링하여 거리가 10보다 크고 개별 테이크 웨이 최대 도달 거리보다 큰 결과가 표시되지 않도록하십시오.

나는 mysql 쿼리가 아닌 PHP 코드에서이 작업을 수행해야하는데, 어떻게 처리 해야할지 모르겠다. 이것은 내가 그들에게 몇 가지 방법을 주문 지금까지 내가 각 유형의 가장 가까운 하나의 레스토랑을 얻기 위해 생각

foreach($takeaway as $takeaway){ 

     $distance = $this->geozip->get_distance($location, $takeaway->postcode);//get the distance between the two postcodes 

     if($distance <= $takeaway->distance && $distance <= 10){ 

      $number = 0; 

      echo $takeaway->name.' is '.$distance.'miles away <br />'; 

     ?> 
      <div class="takeaway_box"> 
       <div class="takeaway_box_band">Indian</div> 

      </div>     
<?php 
     } 
    } 
    ?> 

그때 제로로 거리에 가장 가까운을 가진 사람을 찾는 것이 무엇인가?

이 작업을 수행하는 방법에 대한 도움을 주시면 감사하겠습니다.

답변

0

결과를 필터링하려면 array_filter을 사용하십시오. 그런 다음 usort을 사용하여 거리별로 정렬하십시오. 예에서

:

function filter_function($takeaway) { 
    return $takeaway->someProperty == 1; // could be your menu; 
} 

function sort_function($a, $b) { 
    // distance must be set before elements are passed trough the sort function 
    $ad = $a->distance; 
    $bd = $b->distance; 

    // sort is ASC 
    if ($ad == $bd) { 
     return 0; 
    } 
    // todo DESC change the < operator to > 
    return ($ad < $bd) ? -1 : 1; 
} 

$takeaways = array_filter($takeaways, filter_function); 
usort($takeaways, sort_function); 
관련 문제