recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment fusionner des tableaux à l'aide des valeurs UUID

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粉633075725P粉633075725243 Il y a quelques jours375

répondre à tous(2)je répondrai

  • P粉340980243

    P粉3409802432024-03-30 11:53:32

    Pas besoinarray_combinePas 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);

    répondre
    0
  • P粉769413355

    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 :

    répondre
    0
  • Annulerrépondre