Laravel: объединить массив внутри функции карты

Я хотел бы создать новый массив с функцией карты и объединить его с другим.

например, у меня есть массив, как показано ниже:

$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]

Вы можете использовать array_merge, return array_merge($arr1, $arr2);

Donkarnash 11.12.2020 15:53

@Donkarnash, это не сработает. Мы используем подобную вспомогательную функцию сбора. У обоих одинаковый результат.

ehsan soleimanian 11.12.2020 16:47
Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
0
2
1 051
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я решил свою проблему с изменением (объединением) запроса из функции карты следующим образом:

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

Если будет лучшее решение, пожалуйста, дайте мне знать, ребята

Другие вопросы по теме