Position actuelle: Accueil> Derniers articles> Comment comparer la différence entre un objet après avoir transformé un tableau à l'aide de Array_Diff_uassoc ()?

Comment comparer la différence entre un objet après avoir transformé un tableau à l'aide de Array_Diff_uassoc ()?

M66 2025-05-15

Dans PHP, Array_Diff_uassoc () est une fonction très utile qui compare deux tableaux et juge la différence basée sur les fonctions de rappel des valeurs clés. Cette fonction fonctionne très bien si vous avez un objet et que vous souhaitez le convertir en un tableau pour comparer les différences.

1. Utilisation de base de l'array_diff_uassoc ()

array_diff_uassoc () est utilisé pour comparer les différences entre les paires de valeurs clés de deux tableaux et utiliser une fonction de rappel définie par l'utilisateur pour déterminer comment les différences sont comparées. La syntaxe est la suivante:

 array_diff_uassoc(array $array1, array $array2, callable $key_compare_func) : array
  • Array1 et Array2 : Ces deux tableaux sont les tableaux à comparer.

  • key_compare_func : il s'agit d'une fonction de rappel utilisée pour comparer les clés d'un tableau.

Cette fonction renvoie un tableau contenant des différences, où chaque terme de différence provient du premier tableau ( array1 ) et n'apparaît pas dans le deuxième tableau ( Array2 ).

2. Exemple: comment comparer la différence après que l'objet est converti en array à l'aide de l'array_diff_uassoc ()

Supposons que vous ayez deux objets et que vous souhaitez comparer les différences entre elles après avoir converti les objets en un tableau. Définissons d'abord deux classes simples:

 class Product {
    public $id;
    public $name;
    public $price;

    public function __construct($id, $name, $price) {
        $this->id = $id;
        $this->name = $name;
        $this->price = $price;
    }
}

$product1 = new Product(1, "Apple", 100);
$product2 = new Product(2, "Banana", 50);
$product3 = new Product(3, "Cherry", 75);

// Convertir les objets en tableaux
$array1 = (array)$product1;
$array2 = (array)$product2;
$array3 = (array)$product3;

Après avoir converti l'objet en un tableau, nous pouvons utiliser array_diff_uassoc () pour comparer les différences entre ces tableaux.

3. Comparez les différences après la converti des objets en tableaux

Nous définissons une fonction de rappel pour comparer les clés de deux tableaux. Dans cet exemple, nous comparons simplement les noms de clés:

 function compare_keys($key1, $key2) {
    return strcmp($key1, $key2);
}

// utiliser array_diff_uassoc() Comparaison des différences entre deux tableaux
$diff1 = array_diff_uassoc($array1, $array2, 'compare_keys');
$diff2 = array_diff_uassoc($array1, $array3, 'compare_keys');

// Résultat de sortie
print_r($diff1);
print_r($diff2);

Dans cet exemple, array_diff_uassoc () comparera $ array1 et $ array2 , $ array1 et $ array3 , et renvert leurs différences.

4. Résultat de sortie

La différence de sortie montrera les parties des deux tableaux avec différentes clés et valeurs. Vous pouvez ajuster la fonction de rappel en fonction des besoins réels pour répondre aux besoins de comparaison spécifiques.

5. Pourquoi utiliser array_diff_uassoc () ?

L'avantage d'utiliser array_diff_uassoc () est que vous pouvez non seulement comparer les valeurs du tableau, mais également comparer les clés du tableau en fonction des règles personnalisées. Ceci est très utile pour comparer les différences dans les propriétés arris des objets, en particulier lorsque la structure des données est relativement complexe.

Résumer

En convertissant l'objet en un tableau et en utilisant array_diff_uassoc () , nous pouvons facilement comparer les différences de propriété entre les deux objets. array_diff_uassoc () fournit un mécanisme de rappel flexible, ce qui le rend adapté non seulement aux comparaisons régulières des tableaux, mais aussi à des comparaisons personnalisées basées sur des règles spéciales des clés.