通过 Laravel 集合连接两个数组并用键求和

Concatenating two arrays and sum with keys via Laravel Collection

我有一组数组,格式如下:

[
    {"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 文本列中。我想调用所有 eloquent 模型并将这些数组与对象上每个键的总和合并。例如

第一行包含:

[
    {"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"}
]

第 3 行包含:

[
    {"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());

我得到这个输出:

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

嗯,我试过这样的事情:

$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);

得到了预期的结果,有什么即兴的建议。