Position actuelle: Accueil> Derniers articles> Implémentez Array_Diff_assoc () des tableaux multidimensionnels à l'aide de la méthode récursive

Implémentez Array_Diff_assoc () des tableaux multidimensionnels à l'aide de la méthode récursive

M66 2025-06-06

Supposons que nous ayons deux tableaux multidimensionnels, nous voulons comparer ces deux tableaux et retourner les éléments qui apparaissent dans le premier tableau mais n'existent pas dans le deuxième tableau. Nous pouvons parcourir de manière récursive à travers chaque couche du tableau et effectuer Array_Diff_assoc () pour comparaison.

Voici l'exemple de code pour implémenter Array_Diff_assoc () récursivement à l'aide de PHP:

 <?php

/**
 * Implémenter récursivement des tableaux multidimensionnels array_diff_assoc() Fonction
 *
 * @param array $array1 Le premier tableau
 * @param array $array2 Le deuxième tableau
 * @return array Renvoie le résultat de la différence entre deux tableaux
 */
function recursive_array_diff_assoc($array1, $array2) {
    $difference = array();

    // 遍历Le premier tableau
    foreach ($array1 as $key => $value) {
        // 如果Le deuxième tableau没有此键,Ou la valeur de cette clé est différente
        if (!array_key_exists($key, $array2)) {
            // Si la valeur est un tableau,Comparaison récursive
            $difference[$key] = is_array($value) ? recursive_array_diff_assoc($value, array()) : $value;
        } else {
            // Si la valeur est un tableau,Comparaison récursive
            if (is_array($value) && is_array($array2[$key])) {
                $recursive_diff = recursive_array_diff_assoc($value, $array2[$key]);
                if (!empty($recursive_diff)) {
                    $difference[$key] = $recursive_diff;
                }
            } elseif ($value !== $array2[$key]) {
                // Si la valeur est différente,Ajouter à la différence
                $difference[$key] = $value;
            }
        }
    }

    return $difference;
}

// Exemple de tableau
$array1 = array(
    'a' => 1,
    'b' => array(
        'x' => 2,
        'y' => 3
    ),
    'c' => 4
);

$array2 = array(
    'a' => 1,
    'b' => array(
        'x' => 2,
        'y' => 4
    ),
    'c' => 5
);

// Appeler des méthodes récursives
$result = recursive_array_diff_assoc($array1, $array2);

// Résultats d&#39;impression
print_r($result);

?>

Analyse de code

  1. Recursive_Array_diff_assoc () Fonction :

    • Cette fonction prend deux tableaux en tant que paramètres: $ array1 et $ array2 .

    • Nous traversons chaque paire de valeurs clés dans le premier tableau par foreach .

    • Pour chaque élément, nous vérifions d'abord si la clé est incluse dans le deuxième tableau, et sinon, ajoutez l'élément directement au résultat de retour.

    • Si l'élément est un tableau, nous continuons à comparer les tableaux multidimensionnels à l'aide de récursive_array_diff_assoc () .

    • Enfin, tous les différents éléments sont retournés.

  2. Traitement récursif :

    • Lors de la rencontre d'un élément de tableau, nous appelons la même fonction récursivement pour nous assurer que chaque couche dans un tableau multidimensionnel est comparée.

    • Si l'élément rencontré est un type de données de base (tel que les entiers, les chaînes, etc.), nous comparons directement ses valeurs.

  3. Sortie des résultats :

    • print_r ($ result) est utilisé pour produire le résultat. Dans l'exemple, après que $ array1 et $ array2 sont comparés, la sortie contient la différence entre les deux.

Échantillon de sortie

 Array
(
    [b] => Array
        (
            [y] => 3
        )
    [c] => 4
)

Résumer

À travers le mode récursif, nous pouvons implémenter la fonction array_diff_assoc () des tableaux multidimensionnels en php. Cette méthode garantit que les différences de noms et de valeurs de clés à chaque niveau peuvent être gérées correctement même lorsqu'il y a des sous-réseaux imbriqués dans le tableau.