2017-10-20 3 views
1

私は問題を抱えていましたが、それぞれfullBookingURLpriceをfor-eachでエコーしたいです。私の条件は、アレイ内の最も低いprice 3つのデータを示し、その後、最低そのprice価格foreachループで価格を3つだけ表示して並べ替えを表示

array (size=19) 
    0 => 
    object(stdClass)[3820] 
     public 'agencyName' => string 'ZenHotels.com' (length=13) 
     public 'fullBookingURL' => string 'http://example.com' (length=25) 
     public 'price' => int 590 
      public 'tax' => int 0 
    2 => 
    object(stdClass)[3826] 
     public 'agencyName' => string 'ZenHotels.com' (length=13) 
     public 'fullBookingURL' => string 'http://example.com' (length=25) 
     public 'price' => int 591 
     public 'tax' => int 0 
    5 => 
    object(stdClass)[3835] 
     public 'agencyName' => string 'Hotellook' (length=9) 
     public 'fullBookingURL' => string 'http://example.com' (length=25) 
     public 'price' => int 606 
     public 'tax' => int 0 
    6 => 
    object(stdClass)[3838] 
     public 'agencyName' => string 'ZenHotels.com' (length=13) 
     public 'fullBookingURL' => string 'http://example.com' (length=25) 
     public 'price' => int 712 
     public 'tax' => int 0 
    7 => 
    object(stdClass)[3841] 
     public 'agencyName' => string 'ZenHotels.com' (length=13) 
     public 'fullBookingURL' => string 'http://example.com' (length=25) 
     public 'price' => int 713 
     public 'tax' => int 0 

マイコード

foreach($sval2->rooms as $bookingurl){ 
    echo $bookingurl->fullBookingURL; 
    echo $bookingurl->price; 
} 
+0

foreachを使用することは必須ですか?最初にカスタムコールバックを使って 'uasort'を使って配列内の項目をソートし、ソートされた配列の最初の3項目をエコーすることができます。 –

+0

@ kaduev13いいえ、必須ではありませんか? – Syn00123

+0

あなたは直面している問題は何ですか? – kerbholz

答えて

0

私の提案は、最初uasortを使用してアイテムを並べ替えることであることを示しており、最初にn要素(あなたの場合は3要素)を得るにはarray_sliceを使用してください。

<?php 

// prepare some test data 
$a = new \stdClass(); 
$a->url = 'first_url'; 
$a->price = 1; 

$b = new \stdClass(); 
$b->url = 'second_url'; 
$b->price = 2; 

$c = new \stdClass(); 
$c->url = 'third_url'; 
$c->price = 3; 

$d = new \stdClass(); 
$d->url = 'third_url'; 
$d->price = 4; 

$arr = [$d, $c, $b, $a]; 

// sorting elements 
uasort($arr, function($a, $b) { return $a->price > $b->price; }); 

// printing first 3 elements 
print_r(array_slice($arr, 0, 3)); 

// Array(
//  [0] => stdClass Object 
//   (
//    [url] => first_url 
//    [price] => 1 
//  ) 

//  [1] => stdClass Object 
//   (
//    [url] => second_url 
//    [price] => 2 
//  ) 

//  [2] => stdClass Object 
//   (
//    [url] => third_url 
//    [price] => 3 
//  ) 
//) 
関連する問題