Maison >développement back-end >tutoriel php >Comment fusionner efficacement deux tableaux 2D basés sur une valeur de colonne partagée en PHP ?

Comment fusionner efficacement deux tableaux 2D basés sur une valeur de colonne partagée en PHP ?

DDD
DDDoriginal
2024-12-16 07:31:15453parcourir

How to Efficiently Merge Two 2D Arrays Based on a Shared Column Value in PHP?

Fusion de tableaux 2D en fonction de la valeur de colonne partagée

Pour les tableaux 2D donnés :

$array1 = [
    ['rank' => '579', 'id' => '1'],
    ['rank' => '251', 'id' => '2'],
];

$array2 = [
    ['size' => 'S', 'status' => 'A', 'id' => '1'],
    ['size' => 'L', 'status' => 'A', 'id' => '2'],
];

Fusion à l'aide des fonctions de tableau PHP natives

Pour fusionner les tableaux en fonction de la colonne « id » partagée, vous pouvez exploiter la fonction array_merge_recursive(). Il fusionne de manière récursive les éléments des tableaux d'entrée tout en préservant les clés :

$merged = array_merge_recursive($array1, $array2);

print_r($merged);
// Output:
// Array
// (
//     [0] => Array
//         (
//             [rank] => 579
//             [id] => 1
//             [size] => S
//             [status] => A
//         )
//     [1] => Array
//         (
//             [rank] => 251
//             [id] => 2
//             [size] => L
//             [status] => A
//         )
// )

Fonction de fusion personnalisée

Vous pouvez également définir votre propre fonction pour fusionner des tableaux en fonction d'un clé spécifiée :

function my_array_merge($array1, $array2, $key)
{
    $result = [];
    foreach ($array1 as $item) {
        $result[$item[$key]] = array_merge($item, $array2[$item[$key]]);
    }
    return $result;
}

$merged = my_array_merge($array1, $array2, 'id');

print_r($merged);
// Output:
// Array
// (
//     [1] => Array
//         (
//             [rank] => 579
//             [id] => 1
//             [size] => S
//             [status] => A
//         )
//     [2] => Array
//         (
//             [rank] => 251
//             [id] => 2
//             [size] => L
//             [status] => A
//         )
// )

Envisagez d'utiliser my_array_merge() lorsque vous travaillez avec de grands tableaux, car cela peut surpasser potentiellement array_merge_recursive().

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn