Position actuelle: Accueil> Derniers articles> Comparez rapidement les différences entre les attributs de deux objets à l'aide d'Array_Diff_Key ()

Comparez rapidement les différences entre les attributs de deux objets à l'aide d'Array_Diff_Key ()

M66 2025-06-06

Dans PHP, array_diff_key () est une fonction très utile qui peut être utilisée pour comparer les différences de clés entre deux tableaux ou objets. Si vous avez deux objets et que vous souhaitez comparer rapidement leurs différences d'attribut, vous pouvez convertir les objets en un tableau, puis les implémenter via la fonction array_diff_key () . Les éléments suivants utiliseront un exemple pour expliquer en détail comment utiliser array_diff_key () pour comparer les différences d'attribut des objets.

1. Comprendre la fonction array_diff_key ()

La fonction array_diff_key () est utilisée pour comparer les touches de deux tableaux et renvoie un tableau contenant toutes les clés qui existent dans le premier tableau mais n'existent pas dans le deuxième tableau.

Définition de la fonction:

 array_diff_key(array $array1, array $array2): array
  • $ array1 : le premier tableau.

  • $ array2 : le deuxième tableau.

Renvoie un tableau contenant des clés dans $ array1 mais pas dans $ array2 .

2. Comparez les différences d'attribut d'objet

Parce que les objets PHP sont définis par les classes, ils n'ont pas de noms de clés comme des tableaux. Pour comparer les différences de propriété entre deux objets en utilisant array_diff_key () , vous devez d'abord convertir l'objet en un tableau. Cette transformation peut être réalisée à l'aide de la fonction get_object_vars () .

 <?php
class Person {
    public $name;
    public $age;
    public $email;

    public function __construct($name, $age, $email) {
        $this->name = $name;
        $this->age = $age;
        $this->email = $email;
    }
}

$obj1 = new Person("Alice", 25, "alice@m66.net");
$obj2 = new Person("Bob", 30, "bob@m66.net");

$array1 = get_object_vars($obj1);
$array2 = get_object_vars($obj2);

// utiliser array_diff_key Comparez les différences de propriété des objets
$diff = array_diff_key($array1, $array2);

// Différence de sortie
print_r($diff);
?>

Sortir:

 Array
(
    [name] => Alice
    [age] => 25
    [email] => alice@m66.net
)

3. Expliquez le code

  1. Personne de classe de définition : Nous définissons une classe de personne qui contient trois propriétés publiques: nom , âge et e-mail .

  2. Créer un objet : deux objets de personne Obj1 et Obj2 sont créés, représentant respectivement différentes informations sur le personnel.

  3. Convertir en tableau : Convertissez ces deux objets en tableaux associatifs via la fonction get_object_vars () .

  4. Différence de comparaison : utilisez array_diff_key () pour comparer les différences clés entre deux tableaux. À ce stade, array_diff_key () renverra la clé d'attribut qui est dans $ array1 mais pas dans $ array2 .

4. Analyse des résultats

Dans notre exemple, comme les propriétés d' Obj1 et d'Obj2 sont exactement les mêmes, array_diff_key () renvoie un tableau vide. Vous pouvez ajuster les attributs de l'objet en fonction des besoins réels de l'entreprise, afin que Array_Diff_Key () puisse afficher différents attributs.

Par exemple, supposons que nous modifions OBJ2 afin qu'il n'ait aucun attribut de messagerie :

 $obj2 = new Person("Bob", 30, "");

À l'heure actuelle, l'exécution de Array_Diff_Key () constatera qu'Obj1 a un attribut de messagerie , contrairement à l'OBJ2 .

5. Résumé

array_diff_key () est un outil très efficace qui peut nous aider à comparer rapidement les différences de clés entre deux tableaux ou objets. Dans le développement réel, en particulier lors du traitement des données des utilisateurs, des demandes d'API et d'autres scénarios, il peut être utilisé très facilement pour trouver les différences de propriétés d'objets. En convertissant des objets en tableaux, array_diff_key () peut facilement identifier les différences.

J'espère que cet article peut vous aider à mieux comprendre et utiliser la fonction array_diff_key () pour comparer les différences d'attribut entre les deux objets.