2017-03-02 103 views
1

我认为这是一个奇怪的问题得到相同的数组中元素的值:如何当初始化

我不需要答案带环或推到数组我只是想知道大概的想法

我米试图TI初始化数组,,但我需要这样写的前一个元素,

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'], 
        ), 
     ); 

我需要阅读的差异元素计数元素..是这样做的,当初始化数组

谢谢全部

回答

0

没有,这是不可能的作为数组技术上不会在该点来定义。实现这一

的一种方法是使用类似array_maphttp://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); 

或者,你可以使用mapCollections https://laravel.com/docs/5.3/collections#method-map

return collect($recourd_list)->map(function ($item) { 
    $item['diff'] = $item['count'] - 5; 

    return $item; 
})->toArray(); 

希望这有助于!

0

简短回答: 没有。

但因为你是在初始化时,定义伯爵,为什么不这样做:

'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(), 
    ), 
); 
+0

我知道,但我不需要重复查询,并要求有关想法 –