PHP добавляет элементы из другого ассоциативного массива в тот же массив с теми же ключами

У меня есть несколько ассоциативных массивов, и я хотел бы объединить их в один ассоциативный массив. Например:

$array_1 = Array
(
[0] => Array ( [user_id] => 111 [first_name] => Jack [last_name] => Scotts [email] )
[1] => Array ( [user_id] => 222 [first_name] => David [last_name] => Weathers [email] )
[2] => Array ( [user_id] => 333 [first_name] => Helen [last_name] => Reynolds [email] )
)

$array_2 = Array
(
[111] => Array
(
[0] => Array([user_account] => 111_001 [account_type] => normal )
[1] => Array([user_account] => 111_002 [account_type] => vip )
)

[222] => Array
(
[0]=> Array([user_account] => 222_01 [account_type] => normal )
)
[333] => Array
(
[0]=> Array([user_account] => 333_01[account_type] => vip )
)
)Results:
$new_array = Array
(
[0] => Array
(
[user_id] => 111
[first_name] => Jack
[last_name] => Scotts
[account_data] = > Array
(
[0] => Array([user_account] => 111_001 [account_type] => normal )
[1] => Array([user_account] => 111_002 [account_type] => vip )
)
)
[1] => Array
(
[user_id] => 222
[first_name] => David
[last_name] => Weathers
[account_data] => Array
(
[0]=> Array([user_account] => 222_01 [account_type] => normal )
)
)
[2] => Array
(
[user_id] => 333
[first_name] => Helen
[last_name] => Reynolds
[account_data] => Array
(
[0] => Array ( [user_account] => 333_01 [account_type] => vip )
)
)
)

Пробовал и array_merge, и array_merge рекурсивно, но это не работает.

0

Решение

Для этого нет встроенной функции PHP, поскольку это не очень стандартный способ объединения массивов. Вы можете написать цикл, который сделает это за вас, используя foreach():

$new_array = [];

foreach($array_1 as $user){
$temp = $user;
$temp['account_data'] = $array_2[$user['user_id']];
$new_array[] = $temp;
}

демонстрация

1

Другие решения

Вам нужно написать свою собственную функцию, которая работает в соответствии с вашими конкретными бизнес-правилами. Базовых операций слияния, предоставляемых PHP, недостаточно.

0

По вопросам рекламы [email protected]