2017-07-19 41 views
0

我有問題以我想要的方式查看某些數據。PHP/Laravel Foreach Loop - 僅顯示屬於同一標題的項目

這裏是數組的一個例子:

$items =   
     0 => [ 
       'name' => 'foo' 
       'description' => 'bar' 
       'url' => 'http://foobar.com' 
       'headline' => 'Headline 1' 
      ], 
     1 => [ 
       'name' => 'uni' 
       'description' => 'corn' 
       'url' => 'http://unicorn.com' 
       'headline' => 'Headline 1' 
      ], 

     2 => [ 
       'name' => 'awe' 
       'description' => 'some' 
       'url' => 'http://awesome.com' 
       'headline' => 'Headline 2' 
      ], 

,知道我要通過項目陣列循環,要顯示在第一標題和具有相同標題的所有項目。如果一個項目有另一個標題,我想打印出另一個標題和屬於它的項目。

看起來應該:

Headline 1 : <--- Items that do have this headline 

name = foo 
description = bar 
url = http://foobar.com 

name = uni 
description = corn 
url = http://unicorn.com 

Headline 2 <----- items with a new headline 

name = awe 
description = some 
url = http://awesome.com 

我wansn't能夠做到這一點。有人可以幫我嗎?

我試過類似for循環檢查當前標題與下一個標題。

@for ($i = 0; $i <= count($items); $i++) 
      <span>{{ $items[$i]['headline'] }}</span> 
     @if($items[$i]['headline'] == $items[$i+1]['headline']) 
     ..... 
     @ else ..... 
@endfor 

但是,這並沒有行之有效

感謝您的幫助和抱歉,因爲我的英語不好!

+0

你應該做所有這些事情在後臺 –

回答

1

如果陣列是轉換到陣列之前的集合,你可以使用groupBy()收集方法:

$collection->groupBy('headline'); 
+0

我會努力,我會盡快回復:) – WellNo

+0

@WellNo我剛剛嘗試在您的結構集合上使用它,它工作得很好。 –

+0

我得到了一個對數組上的成員函數groupBy()的調用。所以它不是一個集合。你有沒有辦法在數組上做到這一點? – WellNo

1

也許這可能有幫助。我寫在PHP核心這段代碼

$arr = array(); 
foreach($items as $item) { 
    $arr[$item['headline']] = $item; 
} 

就會返回你的東西數組一樣

Array 
(
    [Headline 1] => Array 
     (
      [name] => uni 
      [description] => corn 
      [url] => http://unicorn.com 
      [headline] => Headline 1 
     ) 

    [Headline 2] => Array 
     (
      [name] => awe 
      [description] => some 
      [url] => http://awesome.com 
      [headline] => Headline 2 
     ) 

)