2016-03-03 2 views
0

Я пытаюсь сортировать данные, которые я получаю от питания SOAP с помощью PHP, я это в настоящее время:Сортировка подачи SOAP с помощью usort & PHP

<?php 

$wsdl = "http://portal.letmc.com/PropertySearchService.asmx?WSDL"; 

$client = new SoapClient($wsdl, array ("trace"=>1, "exceptions"=>0)); 

$strClientID = "{0050-e58a-cd32-3771}"; 
$strBranchID = "{0004-e58a-cd32-399e}"; 
$strAreaID = $_GET['area']; 
$nMaxResults = $_GET['perpage']; 
$nRentMinimum = $_GET['minrent']; 
$nRentMaximum = $_GET['maxrent']; 
$nMaximumTenants = $_GET['numtennants'];       

$parameters = array( "strClientID"=>$strClientID, 
        "strBranchID"=>$strBranchID, 
        "strAreaID"=>$strAreaID, 
        "nMaxResults"=>$nMaxResults, 
        "nRentMinimum"=>$nRentMinimum, 
        "nRentMaximum"=>$nRentMaximum, 
        "nMaximumTenants"=>$nMaximumTenants 
       );       

$values = $client->SearchProperties($parameters); 

if(!is_array($values->SearchPropertiesResult->PropertyInfo)) 
{ 
    $values->SearchPropertiesResult->PropertyInfo = array($values->SearchPropertiesResult->PropertyInfo); 
} 

if($values != '') 
{ 
    $arrayForSort = array(); 
    foreach ($values->SearchPropertiesResult->PropertyInfo as $message) 
    { 
     $uglyid = $message->ID; 
     $id = $message->FriendlyID; 
     $mainphoto = $message->MainPhoto->PhotoUrl; 
     $furnished = $message->Furnished; 
     $addressline1 = $message->Address1; 
     $rooms = $message->MaxTenants; 
     $rent = $message->Rent; 
     $description = $message->Description; 
     $isletagreed = $message->IsLetAgreed; 
     $facilities = $message->Facilities->FacilityInfo; 
     $photos = $message->Photos->PhotoInfo; 
     $roomsinfo = $message->Rooms->RoomInfo; 
     $facilitiesstring = serialize($facilities); 
     $extractnumbers = ereg_replace("[^0-9]", "", $rent); 
     $monthrent = ($extractnumbers)/$rooms; 
     $monthrentrounded = number_format(($monthrent/100),2); 
     $weekrent = ($monthrentrounded) * 12/52; 
     $arrayForSort[] = array('weekrent' => $weekrent, 'message' => $message); 
     $weekrentrounded = floor($weekrent * 100)/100; 

     $roomsinfojson = json_encode($roomsinfo); 
     $facilitiesjson = json_encode($facilities); 
     $roomsinfodouble = (substr_count(strip_tags($roomsinfojson),"Double")); 
     $roomsinfosingle = (substr_count(strip_tags($roomsinfojson),"Single")); 
     $roomsinfobathroom = (substr_count(strip_tags($roomsinfojson),"Bathroom")); 
     $roomsinfoshower = (substr_count(strip_tags($roomsinfojson),"Shower")); 
     $facilitiesparking = (substr_count(strip_tags($facilitiesjson),"Parking")); 
     $facilitiesgarden = (substr_count(strip_tags($facilitiesjson),"Garden")); 

     $totalbathrooms = $roomsinfobathroom + $roomsinfoshower; 
     $totalimages = count($photos); 
       } 

     usort($arrayForSort, function($a, $b) { 
     if ($a['weekrent'] == $b['weekrent']) { 
      return 0; 
     } 
     return ($a['weekrent'] > $b['weekrent']) ? -1 : 1; 
     }); 

     foreach ($arrayForSort as $item) 
     { 
      $message = $item['message']; 
     echo ' 
     <div class="col-property-box col-property-box-1-3"> 
         <div class="owl-property-box">'; 
          $i=0; foreach ($photos as $data) { if($i==4) break; echo '<div class="property-grid-box-picture" style="background: url('. $data->PhotoUrl .') center center;"></div>'; $i++; }; 
         echo '</div> 
       <div class="property-grid-box"> 
         <a href="http://www.stla.co.uk/properties/show/?id='. $uglyid .'" class="property-grid-box-title">'. $addressline1 .'</a> 
         <p class="property-grid-box-text">'. limit_words($description,19) .'...</p> 
        <div class="property-grid-box-price"> 
         <div class="section group"> 
          <div class="col col-property-box-1-2 property-grid-box-price-border-right"> 
           <div class="property-grid-box-price-top">£'. $weekrentrounded.'pp</div> <div class="property-grid-box-price-under">Weekly</div> 
          </div> 
          <div class="col col-property-box-1-2"> 
           <div class="property-grid-box-price-top">£'. $monthrentrounded .'pp</div> <div class="property-grid-box-price-under">Monthly</div> 
          </div> 
         </div> 
        </div> 

        <div class="property-grid-box-icon-box"> 
          <div class="section group"> 
          <div class="col col-1-4-border no-left-border"> 
          <span class="property-grid-box-number-icon"><center><i class="flaticon-beds10"></i></center><div class="property-grid-box-number-text">4</div></span> 
          </div> 
          <div class="col col-1-4-border"> 
          <span class="property-grid-box-number-icon"><center><i class="flaticon-beds12"></i></center><div class="property-grid-box-number-text property-grid-box-second-number">2</div></span> 
          </div> 
          <div class="col col-1-4-border"> 
          <span class="property-grid-box-number-icon"><center><i class="flaticon-toilet7"></i></center><div class="property-grid-box-number-text">1</div></span> 
          </div>       
          <div class="col col-1-4-border"> 
          <span class="property-grid-box-number-icon"><center><i class="flaticon-camera3"></i></center><div class="property-grid-box-number-text property-grid-box-last-number">0</div></span> 
          </div> 
         </div> 
       </div> 
       </div> 

      </div> 
     '; 
    } 
} 

function limit_words($string, $word_limit) 
{ 
    $words = explode(" ",$string); 
    return implode(" ",array_splice($words,0,$word_limit)); 
} 
?> 

Это, кажется, не работает, хотя, я Я просто несколько раз загружаю одну загрузку свойств, я пытаюсь сортировать данные с помощью $ weekrent.

Любая помощь будет замечательной!

ответ

1

Написать usort, как показано ниже: -

usort($arrayForSort, function($a, $b) { 
    return $a['weekrent'] - $b['weekrent']; 
}); 
+2

Это просто переписав оригинальный 'usort' вызов другому. Похоже, что он действительно не меняет логики (на самом деле, поскольку возвращаемое значение обратного вызова принуждается к 'int', оно будет учитывать такие значения, как' 20.50' и '20.99'). – Phylogenesis

Смежные вопросы