Laravel集合提取所有重新分配给项或键的值


Laravel Collection pulling all values realted to a item or key

我有一个集合,看起来像这样:

[{"name":"John","apples":8,"pears":4,"oranges":6,"bananas":5},
{"name":"Jane","apples":3,"pears":4,"oranges":2,"bananas":3},
{"name":"Joe","apples":86,"pears":76,"oranges":79,"bananas":77},
{"name":"Janet","apples":3,"pears":16,"oranges":13,"bananas":15}]

我需要得到的是一个集合或数组,如下所示:

[{"name":"John","data":[ 8, 4, 6, 5]}, 
{"name":"Jane","data":[ 3, 4, 2, 3]}, 
{"name":"Joe","data":[ 86, 76, 79, 77]}, 
{"name":"Janet","data":[ 3, 16, 13, 15]}]

快速简便的解决方案:

$newCollection = collect([
    ["name" => "John", "apples" => 8, "pears" => 4, "oranges" => 6, "bananas" => 5],
    ["name" => "Jane", "apples" => 3, "pears" => 4, "oranges" => 2, "bananas" => 3],
    ["name" => "Joe", "apples" => 86, "pears" => 76, "oranges" => 79, "bananas" => 77],
    ["name" => "Janet", "apples" => 3, "pears" => 16, "oranges" => 13, "bananas" => 15],
])->map(function ($row) {
    return [
        'name' => $row['name'],
        'data' => array_values(array_slice($row, 1))
    ];
});

请记住,这将忽略第一个键之后的所有顺序键。