Maison >développement back-end >tutoriel php >Comment fusionner plusieurs tableaux en un seul tableau en fonction des noms de clés spécifiés en PHP

Comment fusionner plusieurs tableaux en un seul tableau en fonction des noms de clés spécifiés en PHP

WBOY
WBOYoriginal
2023-07-07 16:12:231445parcourir

Comment fusionner plusieurs tableaux en un seul tableau selon le nom de clé spécifié en PHP

En développement, nous rencontrons souvent le besoin de fusionner plusieurs tableaux en un seul tableau selon le nom de clé spécifié. Ce besoin est très courant lorsque l’on travaille avec des données, en particulier lorsque l’on travaille avec des jeux de résultats de bases de données, par exemple. Cet article présentera plusieurs méthodes courantes pour réaliser cette fonction et donnera des exemples de code correspondants.

Méthode 1 : utiliser le parcours en boucle

La méthode la plus simple consiste à utiliser une boucle pour parcourir tous les tableaux et à ajouter les valeurs correspondantes au nouveau tableau en fonction du nom de clé spécifié. L'exemple de code est le suivant :

function mergeArrays($key, ...$arrays)
{
    $result = [];
    
    foreach ($arrays as $array) {
        if (isset($array[$key])) {
            $result[] = $array[$key];
        }
    }
    
    return $result;
}

$array1 = ['id' => 1, 'name' => 'Alice'];
$array2 = ['id' => 2, 'name' => 'Bob'];
$array3 = ['id' => 3, 'name' => 'Charlie'];

$result = mergeArrays('name', $array1, $array2, $array3);

print_r($result);

Exécutez le code ci-dessus, le résultat de sortie est :

Array
(
    [0] => Alice
    [1] => Bob
    [2] => Charlie
)

Méthode 2 : utilisez la fonction array_map

array_map pour appliquer une fonction de rappel à plusieurs tableaux et renvoyer un nouveau tableau. Nous pouvons utiliser cette fonction pour fusionner plusieurs tableaux. L'exemple de code est le suivant :

function mergeArrays($key, ...$arrays)
{
    $callback = function ($array) use ($key) {
        return $array[$key] ?? null;
    };
    
    $result = array_map($callback, $arrays);
    
    return array_filter($result, function($value) {
        return $value !== null;
    });
}

$array1 = ['id' => 1, 'name' => 'Alice'];
$array2 = ['id' => 2, 'name' => 'Bob'];
$array3 = ['id' => 3, 'name' => 'Charlie'];

$result = mergeArrays('name', $array1, $array2, $array3);

print_r($result);

Exécutez le code ci-dessus, le résultat de sortie est :

Array
(
    [0] => Alice
    [1] => Bob
    [2] => Charlie
)

Méthode 3 : Utiliser la fonction array_reduce

La fonction array_reduce est utilisée pour traiter de manière itérative les éléments du tableau, les traiter selon les spécifications spécifiées. fonction de rappel et renvoyer un résultat final. Nous pouvons utiliser cette fonction pour fusionner plusieurs tableaux. L'exemple de code est le suivant :

function mergeArrays($key, ...$arrays)
{
    $callback = function ($result, $array) use ($key) {
        if (isset($array[$key])) {
            $result[] = $array[$key];
        }
        return $result;
    };
    
    $result = array_reduce($arrays, $callback, []);
    
    return $result;
}

$array1 = ['id' => 1, 'name' => 'Alice'];
$array2 = ['id' => 2, 'name' => 'Bob'];
$array3 = ['id' => 3, 'name' => 'Charlie'];

$result = mergeArrays('name', $array1, $array2, $array3);

print_r($result);

Exécutez le code ci-dessus, le résultat de sortie est :

Array
(
    [0] => Alice
    [1] => Bob
    [2] => Charlie
)

Ce qui précède sont des exemples de plusieurs méthodes courantes pour fusionner plusieurs tableaux en un seul tableau en fonction du nom de clé spécifié. Choisir la méthode appropriée en fonction de la situation réelle peut grandement améliorer l'efficacité et la lisibilité du code. J'espère que cela aide!

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