У меня есть несколько ассоциативных массивов, и я хотел бы объединить их в один ассоциативный массив. Например:
$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 рекурсивно, но это не работает.
Для этого нет встроенной функции PHP, поскольку это не очень стандартный способ объединения массивов. Вы можете написать цикл, который сделает это за вас, используя foreach()
:
$new_array = [];
foreach($array_1 as $user){
$temp = $user;
$temp['account_data'] = $array_2[$user['user_id']];
$new_array[] = $temp;
}
Вам нужно написать свою собственную функцию, которая работает в соответствии с вашими конкретными бизнес-правилами. Базовых операций слияния, предоставляемых PHP, недостаточно.