我认为这是一个奇怪的问题:
我不需要回答循环或推送到数组我只是想知道这个想法
我正在尝试初始化一个数组,但我需要读取前面这样的元素,
return $recourd_list = array(
'clients'=> array(
'route' => 'clients.index',
'title' => 'fullname',
'list' => Clients::orderBy('id', 'desc')->take(5)->get(),
'count' => Clients::count(),
'class' => 'bgm-lightgreen',
'diff' => 5 - $recourd_list['clients']['count'],
),
'sliders'=> array(
'route' => 'sliders',
'title' => 'title',
'list' => Sliders::orderBy('id', 'desc')->take(5)->get(),
'count' => Sliders::count(),
'class' => 'bgm-rightBlue Oil-color',
'diff' => 5 - $recourd_list['sliders']['count'],
),
'sponsors'=> array(
'route' => 'sponsors.index',
'title' => 'title',
'list' => Sponsors::orderBy('id', 'desc')->take(5)->get(),
'count' => Sponsors::count(),
'class' => 'bgm-nave dark-green',
'diff' => 5 - $recourd_list['sponsors']['count'],
),
'packages'=> array(
'route' => 'packages',
'title' => 'title',
'list' => Packages::orderBy('id', 'desc')->take(5)->get(),
'count' => Packages::count(),
'class' => 'bgm-bluegray',
'diff' => 5 - $recourd_list['packages']['count'],
),
'event_schedule'=> array(
'route' => 'event_schedule.index',
'title' => 'title',
'list' => EventSchedule::orderBy('id', 'desc')->take(5)->get(),
'count' => EventSchedule::count(),
'class' => 'bgm-orange',
'diff' => 5 - $recourd_list['event_schedule']['count'],
),
);
我需要读取diff元素中的count元素..这是初始化数组
时的方法全部谢谢
答案 0 :(得分:0)
简短回答: 否强>
但是,由于您在初始时定义了Count,为什么不这样做:
'diff' => 5 - Clients::count(),
所以整个例子:
return $recourd_list = array(
'clients' => array(
'route' => 'clients.index',
'title' => 'fullname',
'list' => Clients::orderBy('id', 'desc')->take(5)->get(),
'count' => Clients::count(),
'class' => 'bgm-lightgreen',
'diff' => 5 - Clients::count(),
),
'sliders' => array(
'route' => 'sliders',
'title' => 'title',
'list' => Sliders::orderBy('id', 'desc')->take(5)->get(),
'count' => Sliders::count(),
'class' => 'bgm-rightBlue Oil-color',
'diff' => 5 - Sliders::count(),
),
'sponsors' => array(
'route' => 'sponsors.index',
'title' => 'title',
'list' => Sponsors::orderBy('id', 'desc')->take(5)->get(),
'count' => Sponsors::count(),
'class' => 'bgm-nave dark-green',
'diff' => 5 - Sponsors::count(),
),
'packages' => array(
'route' => 'packages',
'title' => 'title',
'list' => Packages::orderBy('id', 'desc')->take(5)->get(),
'count' => Packages::count(),
'class' => 'bgm-bluegray',
'diff' => 5 - Packages::count(),
),
'event_schedule' => array(
'route' => 'event_schedule.index',
'title' => 'title',
'list' => EventSchedule::orderBy('id', 'desc')->take(5)->get(),
'count' => EventSchedule::count(),
'class' => 'bgm-orange',
'diff' => 5 - EventSchedule::count(),
),
);
答案 1 :(得分:0)
不,这是不可能的,因为此时技术上不会定义数组。
实现这一目标的一种方法是使用array_map
之类的东西。
http://php.net/manual/en/function.array-map.php
$recourd_list = array(
'clients'=> array(
'route' => 'clients.index',
'title' => 'fullname',
'list' => Clients::orderBy('id', 'desc')->take(5)->get(),
'count' => Clients::count(),
'class' => 'bgm-lightgreen',
),
'sliders'=> array(
'route' => 'sliders',
'title' => 'title',
'list' => Sliders::orderBy('id', 'desc')->take(5)->get(),
'count' => Sliders::count(),
'class' => 'bgm-rightBlue Oil-color',
),
'sponsors'=> array(
'route' => 'sponsors.index',
'title' => 'title',
'list' => Sponsors::orderBy('id', 'desc')->take(5)->get(),
'count' => Sponsors::count(),
'class' => 'bgm-nave dark-green',
),
'packages'=> array(
'route' => 'packages',
'title' => 'title',
'list' => Packages::orderBy('id', 'desc')->take(5)->get(),
'count' => Packages::count(),
'class' => 'bgm-bluegray',
),
'event_schedule'=> array(
'route' => 'event_schedule.index',
'title' => 'title',
'list' => EventSchedule::orderBy('id', 'desc')->take(5)->get(),
'count' => EventSchedule::count(),
'class' => 'bgm-orange',
),
);
然后
return array_map(function ($item) {
$item['diff'] = $item['count'] - 5;
return $item;
}, $recourd_list);
或者,您可以将map
与Collections
一起使用
https://laravel.com/docs/5.3/collections#method-map
return collect($recourd_list)->map(function ($item) {
$item['diff'] = $item['count'] - 5;
return $item;
})->toArray();
希望这有帮助!