2017-10-19 117 views
0

通過此示例,我試圖循環嵌套數組並輸出以下信息。如何在Laravel中循環並輸出嵌套數組

Collection {#252 ▼ #items: array:1 [▼ 
     0 => Collection {#258 ▼ 
      #items: array:4 [▼ 
      0 => array:3 [▼ 
       0 => "Stylish Hat" 
       1 => "Green" 
       2 => "2017-10-16 17:57:49" 
      ] 
      1 => array:3 [▼ 
       0 => "Stylish Hat" 
       1 => "Blue" 
       2 => "2017-10-16 17:57:49" 
      ] 
      2 => array:3 [▼ 
       0 => "Stylish Hat" 
       1 => "Red" 
       2 => "2017-10-16 18:00:24" 
      ] 
      3 => array:3 [▼ 
       0 => "Classic Hat" 
       1 => "Black" 
       2 => "2018-10-16 18:00:24" 
      ] 
      ] 
     } ] } 

STYLISH HAT

顏色:綠,藍,紅

銷售日期:2017年10月16日


CLASSIC HAT

顏色:黑色

銷售日期:2018年10月16日


我已經嘗試了各種方法,但沒有成功輸出,所以我不知道如果我當前的代碼是任何價值的,但這裏是我在黑暗中刺這當然是完全錯誤的......從集合類

@foreach ($hatData->toArray() as $hatStyle => $color => $saleDate) 
     <div style="color:#333;font-size:14pt;"> 
      <b>{{ $hatStyle }}</b> 
     </div> 
     @foreach($colors as $color) 
      <div style="color:#333;font-size:10pt;"> 
       colors: {{ $color }} 
      </div> 
      <div> 
       Sale Date: {{ $saleDate }} 
      </div> 
     @endforeach 
     @endforeach 

回答

0

其他人是否在Laravel與GROUPBY嵌套陣列的輸出掙扎乾淨的方法,我發現這樣做是如下。主循環是groupBy字段,內循環是每個組的獨特特徵。我的收藏也與上面的例子有所不同。

我建我的數組首先搶佔了所有的記錄,然後由我所需的字段分組這樣。

 $mainCollection=records::where('this','=','that')->get();  

     $selected = $mainCollection->map(function ($item) { 
      return [ 
      'mainValue'=>$item->mainValue, 
      'itemOne' => $item->itemOne, 
      'itemTwo' => $item->itemTwo 
      ]; 
     }); 

     $mainLoop=$selected->groupBy('mainValue'); 

然後輸出我用下面的循環

 @foreach ($mainLoop as $ml) 

     <div> 
      <u>{{ $ml[0]['mainValue'] }}</u> 
     </div> 

     @foreach($ml as $item) 
      <div> 
       {{$item['itemOne']}} - {{ $item['itemTwo'] }} 
      </div> 
     @endforeach 

     @endforeach 

不知道這是過於抽象,幫助別人,也許它不是最好的方式,但我花了一點點狩獵並將我讀過的不同的東西拼湊在一起來理解這一點。

0

使用GROUPBY這樣的:

$collection = collect([ 
['account_id' => 'account-x10', 'product' => 'Chair'], 
['account_id' => 'account-x10', 'product' => 'Bookcase'], 
['account_id' => 'account-x11', 'product' => 'Desk'], 
]); 

$grouped = $collection->groupBy('account_id'); 

$grouped->toArray(); 

/* 
    [ 
     'account-x10' => [ 
      ['account_id' => 'account-x10', 'product' => 'Chair'], 
      ['account_id' => 'account-x10', 'product' => 'Bookcase'], 
     ], 
     'account-x11' => [ 
      ['account_id' => 'account-x11', 'product' => 'Desk'], 
     ], 
    ] 
*/ 

https://laravel.com/docs/5.5/collections#method-groupby

+0

嗨,我一直在尋找如何輸出不只是建立數組,因爲我已經做了,在前面的問題我聯繫更多的信息。但是這仍然是一個幫助,因爲我不知道分組 - > toArray()命令。因爲我自己弄清楚了輸出部分,所以不知道如何關閉或者刪除? – weekapaug