我有问题以我想要的方式查看某些数据。
以下是数组的示例:
$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'
],
并知道我想循环遍历items数组,并希望首先显示标题以及所有具有相同标题的项目。如果某个项目有另一个标题,我想打印出其他标题和属于它的项目。
看起来应该是这样的:
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
我无法做到这一点。有人可以帮助我吗?
我尝试了类似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');
答案 1 :(得分:1)
将laravel集合与groupby()方法一起使用
$collection = collect($items);
$items= $collection->groupBy('headline');
$items->toArray();
数组将按标题分割
来自Laravel文档https://laravel.com/docs/5.4/collections#method-groupby
答案 2 :(得分: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
)
)