我有以下代码:
<?php
$arr1 = array();
$arr1[] = ['UUID' => '123a-123a', 'name' => 'A1'];
$arr1[] = ['UUID' => '123b-123b', 'name' => 'B1'];
$arr1[] = ['UUID' => '123c-123c', 'name' => 'C1'];
$arr2 = array();
$arr2[] = ['UUID' => '123a-123a', 'name' => 'A2'];
$arr2[] = ['UUID' => '123b-123b', 'name' => 'B2'];
$arr2[] = ['UUID' => '123c-123c', 'name' => 'C2'];
$new_arr1 = array();
foreach ($arr1 as $key => $value) {
if(isset($new_arr1[$value['UUID']])){
$new_arr1[$value['UUID']] += ['name_a' => $value['name']];
}else{
$new_arr1[$value['UUID']] = ['name_a' => $value['name']];
}
}
$new_arr2 = array();
foreach ($arr2 as $key => $value) {
if(isset($new_arr2[$value['UUID']])){
$new_arr2[$value['UUID']] += ['name_1' => $value['name']];
}else{
$new_arr2[$value['UUID']] = ['name_2' => $value['name']];
}
}
$final_array = array_combine($new_arr1, $new_arr2);
var_dump($final_array);
这给了我以下错误:
Warning: Array to string conversion in /home/user/scripts/code.php on line 32
片段:
https://sandbox.onlinephpfunctions.com/c/cf5fd
我想使用 UUID 作为数组 ID。
这是预期的输出:
Array
(
[123a-123a] => Array
(
[name_1] => A1
[name_2] => A2
)
[123b-123b] => Array
(
[name_1] => B1
[name_2] => B2
)
[123c-123c] => Array
(
[name_1] => C1
[name_2] => C2
)
) Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
不需要
array_combine也不需要中间数组,只需从已有的数组中构造新数组即可:$arr1 = array(); $arr1[] = ['UUID' => '123a-123a', 'name' => 'A1']; $arr1[] = ['UUID' => '123b-123b', 'name' => 'B1']; $arr1[] = ['UUID' => '123c-123c', 'name' => 'C1']; $arr2 = array(); $arr2[] = ['UUID' => '123a-123a', 'name' => 'A2']; $arr2[] = ['UUID' => '123b-123b', 'name' => 'B2']; $arr2[] = ['UUID' => '123c-123c', 'name' => 'C2']; $final_array = []; foreach( array_merge($arr1, $arr2) as $entry ){ if( empty( $final_array[$entry['UUID']] ) ) $final_array[$entry['UUID']] = ['name_1' => $entry['name']]; else $final_array[$entry['UUID']][ 'name_' . (count( $final_array[$entry['UUID']] ) + 1) ] = $entry['name']; } print_r($final_array);您需要使用
array_merge_recursive而不是使用array_combine,因为它是多维的片段: https://sandbox.onlinephpfunctions.com/c/eae35
参考: