【问题标题】:Concatenating two arrays and sum with keys via Laravel Collection通过 Laravel 集合连接两个数组并用键求和
【发布时间】:2019-12-12 23:11:33
【问题描述】:

我有一组类似这种格式的数组:

[
    {"GA_1":"1","GA_2":null,"GA_3":null,"GA_4":null}, 
    {"SA_1":null,"SA_2":"2","SA_3":null,"SA_4":null}, 
    {"RA_1":"1","RA_2":null,"RA_3":null,"RA_4":null}
]

我将它以 json_decoded 格式存储在我的 mysql 文本列中。我想调用所有雄辩的模型并将这些数组与对象上每个键的总和合并。例如

第一行包含:

[
    {"GA_1":"1","GA_2":null,"GA_3":null,"GA_4":null}, 
    {"SA_1":null,"SA_2":"2","SA_3":null,"SA_4":null}, 
    {"RA_1":"1","RA_2":null,"RA_3":null,"RA_4":null}
]

第二行包含:

[
    {"GA_1":null,"GA_2":"1","GA_3":"2","GA_4":null}, 
    {"SA_1":"1","SA_2":null,"SA_3":"3","SA_4":null}, 
    {"RA_1":null,"RA_2":"2","RA_3":null,"RA_4":"5"}
]

第三行包含:

[
    {"GA_1":"1","GA_2":null,"GA_3":null,"GA_4":null}, 
    {"SA_1":null,"SA_2":"2","SA_3":null,"SA_4":null}, 
    {"RA_1":"1","RA_2":null,"RA_3":null,"RA_4":null}
]

所以我的最终输出应该是:

[
    {"GA_1":"2","GA_2":"1","GA_3":"2","GA_4":null}, 
    {"SA_1":"1","SA_2":"4","SA_3":null,"SA_4":null}, 
    {"RA_1":"1","RA_2":"2","RA_3":null,"RA_4":"5"}
]

我被困在如何实现这一点:

$games = Game::get();

$grid = [];
foreach ($games as $game) {
    $grid[] = collect($game->grid_values);
}

dd(collect('$grid')->flatten());

我得到这个输出:

欢迎提出任何建议。谢谢。

【问题讨论】:

    标签: laravel laravel-6 laravel-collection


    【解决方案1】:

    我试过这样的:

    $games = Game::get();
    
    $d = collect($games)->map(function($item) {
        return json_decode($item->grid_values);
    })->flatten();
    
    $x = collect([
        [
            'GA_1' => $d->sum('GA_1'),
            'GA_2' => $d->sum('GA_2'),
            'GA_3' => $d->sum('GA_3'),
            'GA_4' => $d->sum('GA_4'),
            'GA_5' => $d->sum('GA_5'),
            'GA_6' => $d->sum('GA_6'),
            'GA_7' => $d->sum('GA_7'),
            'GA_8' => $d->sum('GA_8'),
            'GA_9' => $d->sum('GA_9'),
            'GA_0' => $d->sum('GA_0'),
        ],
        [
            'SA_1' => $d->sum('SA_1'),
            'SA_2' => $d->sum('SA_2'),
            'SA_3' => $d->sum('SA_3'),
            'SA_4' => $d->sum('SA_4'),
            'SA_5' => $d->sum('SA_5'),
            'SA_6' => $d->sum('SA_6'),
            'SA_7' => $d->sum('SA_7'),
            'SA_8' => $d->sum('SA_8'),
            'SA_9' => $d->sum('SA_9'),
            'SA_0' => $d->sum('SA_0'),
        ],
        [
            'RA_1' => $d->sum('RA_1'),
            'RA_2' => $d->sum('RA_2'),
            'RA_3' => $d->sum('RA_3'),
            'RA_4' => $d->sum('RA_4'),
            'RA_5' => $d->sum('RA_5'),
            'RA_6' => $d->sum('RA_6'),
            'RA_7' => $d->sum('RA_7'),
            'RA_8' => $d->sum('RA_8'),
            'RA_9' => $d->sum('RA_9'),
            'RA_0' => $d->sum('RA_0'),
        ],
    ]);
    
    return response()->json(['data' => $x], 200);
    

    我得到了预期的结果,请提出任何即兴创作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-31
      • 1970-01-01
      • 1970-01-01
      • 2019-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-02
      相关资源
      最近更新 更多