Maison > Questions et réponses > le corps du texte
J'ai le code suivant :
<?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);
Cela me donne l'erreur suivante :
Warning: Array to string conversion in /home/user/scripts/code.php on line 32
Extrait :
https://sandbox.onlinephpfunctions.com/c/cf5fd
Je souhaite utiliser l'UUID comme ID de tableau.
Voici le résultat attendu :
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 ) )
P粉3409802432024-03-30 11:53:32
Pas besoinarray_combine
Pas besoin d'un tableau intermédiaire, construisez simplement un nouveau tableau à partir d'un tableau existant :
$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);
P粉7694133552024-03-30 09:37:41
Vous devez utiliser array_merge_recursive
而不是使用array_combine
car il est multidimensionnel
Extrait : https://sandbox.onlinephpfunctions.com/c/eae35
Référence :