如果集合是有序集合,您可以遍历其中一个并排列数据:
/**
* Merging the user and the car collections
*
* @param Collection $users
* @param Collection $cars
*
* @return Collection
*/
function mergeUserCollections(Collection $users, Collection $cars): Collection
{
$result = [];
foreach ($users as $index => $user) {
$result[] = [
'name' => $user['name'],
'age' => $user['age'],
'car' => $cars[$index]['car'],
];
}
return collect($result);
}
function getData()
{
$users = collect([
["name"=>"sam", "age"=>20],
["name"=>"john", "age"=>21],
["name"=>"roz", "age"=>19]
]);
$cars = collect([
["name"=>"sam", "car"=>"BMW"],
["name"=>"john", "car"=>"Audi"],
["name"=>"roz", "car"=>"Ford"]
]);
$merged_data = mergeUserCollections($users, $cars);
}
如果不是,则按带有名称的汽车集合分组:
/**
* Merging the user and the car collections
*
* @param Collection $users
* @param Collection $cars
*
* @return Collection
*/
function mergeUserCollections(Collection $users, Collection $cars): Collection
{
$result = [];
$users_cars = $cars->keyBy('name');
foreach ($users as $index => $user) {
$result[] = [
'name' => $user['name'],
'age' => $user['age'],
'car' => $users_cars[$user['name']]['car'],
];
}
return collect($result);
}
function getData()
{
$users = collect([
["name"=>"sam", "age"=>20],
["name"=>"john", "age"=>21],
["name"=>"roz", "age"=>19]
]);
$cars = collect([
["name"=>"sam", "car"=>"BMW"],
["name"=>"john", "car"=>"Audi"],
["name"=>"roz", "car"=>"Ford"]
]);
$merged_data = mergeUserCollections($users, $cars);
}