Брать значения ключей из другого массива
Как получить значение из второго массива первый основной массив
array (
1 =>
array (
'id' => '1',
'count' => '1',
),
2 =>
array (
'id' => '2',
'count' => '1',
),
3 =>
array (
'id' => '3',
'count' => '1',
),
4 =>
array (
'id' => '3',
'count' => '1',
),
5 =>
array (
'id' => '3',
'count' => '1',
),
и тд......
)
второй с описанием id
array (
2 =>
array (
'id' => '1',
'name' => 'Oleg',
),
3 =>
array (
'id' => '2',
'name' => 'Irina',
),
4 =>
array (
'id' => '3',
'name' => 'Dmitriy',
),
и тд......
)
Нужно получить вот такой массив добавив значения из второго массива сравнивая id
array (
1 =>
array (
'id' => '1',
'count' => '1',
'name' => 'Oleg',
),
2 =>
array (
'id' => '2',
'count' => '1',
'name' => 'Irina',
),
3 =>
array (
'id' => '3',
'count' => '1',
'name' => 'Dmitriy',
),
4 =>
array (
'id' => '3',
'count' => '1',
'name' => 'Dmitriy',
),
5 =>
array (
'id' => '3',
'count' => '1',
'name' => 'Dmitriy',
),
и тд......
)
Ответы (3 шт):
Автор решения: teran
→ Ссылка
разложите второй массив на пары ключ-значение с помощью
$names = array_column($second, 'name', 'id');
пройдитесь по первому и добавьте имена
array_walk($first, function(&$v) use ($names){
$v['name'] = $names[$v['id']];
}) ;
Автор решения: Technoboy
→ Ссылка
Вроде получилось, а как сделать если больше значений
array (
'id' => '23',
'name' => '',
'add_name' => '',
'icon' => '',
'grade' => '',
),
Автор решения: Technoboy
→ Ссылка
Добавил таким образом) всем спасибо за идеальное решение!
$name = array_column($slot_info, 'name', 'id',);
$icon0 = array_column($slot_info, 'icon0', 'id',);
$add_name = array_column($slot_info, 'add_name', 'id',);
array_walk($inv_slot_array_id_all, function(&$v) use ($name){
$v['name'] = $name[$v['id']];
}) ;
array_walk($inv_slot_array_id_all, function(&$v) use ($icon0){
$v['icon0'] = $icon0[$v['id']];
}) ;
array_walk($inv_slot_array_id_all, function(&$v) use ($add_name){
$v['add_name'] = $add_name[$v['id']];
}) ;