我有一个集合,看起来像这样:
[{"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))
];
});
请记住,这将忽略第一个键之后的所有顺序键。