Я хотел бы создать новый массив с функцией карты и объединить его с другим.
например, у меня есть массив, как показано ниже:
$arr1=['x' => 0 , 'y' => 0]
и пример запроса, который создаст другой массив со своими ключами, а затем я хотел бы объединить их и вернуть результаты в $query
$query->mapWithKeys( function ($item,$key) use ($arr1) {
$arr2 = [$item-> a => $item-> b]; // for example it generates ['x' => 20 , 'y'=>30]
return collect($arr1)->merge ($arr2);// this returns ['x' => 0 , 'y' => 30]
});
Мне нужно, чтобы результаты слияния были такими:
['x' => 20 , 'y' => 30]
@Donkarnash, это не сработает. Мы используем подобную вспомогательную функцию сбора. У обоих одинаковый результат.
Я решил свою проблему с изменением (объединением) запроса из функции карты следующим образом:
$query->mapWithKeys( function ($item,$key) {
return 'data'=>[$item-> a => $item-> b]; // for example it generates ['x' => 20 , 'y'=>30]
});
и теперь мы изменим запрос с использованием .each() следующим образом:
$query = $query->each(function ($item, $key) use ($arr1) {
return $item->data = collect($arr1)->merge($item->data);
});
Если будет лучшее решение, пожалуйста, дайте мне знать, ребята
Вы можете использовать array_merge,
return array_merge($arr1, $arr2);