我也想知道它们两者的名称是什么?例如引用的数组项如$ item ['name']和$ item-> name如果有一个术语! (不是关键,价值观)
$items = collection([
[
'name' => 'test item 1',
'description' => 'this is a description',
],
[
'name' => 'test item 1',
'description' => 'this is a description',
],
[
'name' => 'test item 1',
'description' => 'this is a description',
],
]);
然后在刀片或任何id爱情中能够像
那样引用它们foreach($items as $item) {
echo $item->name;
}
而不是
foreach($items as $item) {
echo $item['name'];
}
修改
解决了谢谢你们的答案。
$collection->map(function ($section) {
return (object) [
'label' => $section['label'],
'items' => collect($section['items'])->map(function ($item) {
return (object) $item;
}),
];
});
下面的完整代码也用于检查集合中是否存在项目。
protected $collection = [];
public function __construct()
{
parent::__construct();
$this->collection = collect([
[
'label' => 'Section label 1',
'items' => [
[
'label' => 'Item label 1',
'description' => 'Item description',
],
],
],
[
'label' => 'Section label 2',
'items' => [
[
'label' => 'Item label 2',
'description' => 'Item description',
],
],
],
[
'label' => 'Section label 3',
'items' => [
[
'label' => 'Item label 3',
'description' => 'Item description',
],
],
],
])
->map(function ($section) {
return (object) [
'label' => $section['label'],
'items' => collect($section['items'])->map(function ($item) {
return (object) $item;
}),
];
});
}
public function show($slug = '')
{
$item = $this->getItem($slug);
if (null === $item) {
abort(404);
}
return view('show')
->withItem($item);
}
protected function getItem($slug)
{
return $this
->collection
->flatMap(function ($section) {
return $section->items;
})
->first(function ($item) use ($slug) {
return str_slug($item->label) === $slug;
});
}
答案 0 :(得分:2)
试试这个
$items= json_decode(json_encode((object) $items), FALSE);
json_decode
第二个参数如果为true则会将结果转换为array
,否则结果为object
查看here以供参考
答案 1 :(得分:1)
您可以使用Collection::map
功能。
$items = $items->map(function($item) { return (object) $item; })
然后在你的模板中:
@foreach ($items as $item)
{{ $item->name }}
@endforeach