Aktueller Standort: Startseite> Neueste Artikel> Vergleichen Sie schnell die Unterschiede zwischen den Attributen der zwei Objekte mit Array_Diff_key ()

Vergleichen Sie schnell die Unterschiede zwischen den Attributen der zwei Objekte mit Array_Diff_key ()

M66 2025-06-06

In PHP ist Array_Diff_key () eine sehr nützliche Funktion, mit der wichtige Unterschiede zwischen zwei Arrays oder Objekten verglichen werden können. Wenn Sie zwei Objekte haben und ihre Attributunterschiede schnell vergleichen möchten, können Sie die Objekte in ein Array umwandeln und sie dann über die Funktion array_diff_key () implementieren. Im Folgenden wird ein Beispiel verwendet, um ausführlich zu erklären, wie Sie Array_Diff_key () verwenden, um die Attributunterschiede von Objekten zu vergleichen.

1. Verstehen Sie die Funktion array_diff_key ()

Die Funktion array_diff_key () wird verwendet, um die Schlüssel von zwei Arrays zu vergleichen und gibt ein Array zurück, das alle im ersten Array existierenden Schlüssel enthält, aber im zweiten Array nicht existiert.

Funktionsdefinition:

 array_diff_key(array $array1, array $array2): array
  • $ Array1 : Das erste Array.

  • $ array2 : Das zweite Array.

Gibt ein Array zurück, das Schlüssel in $ array1 enthält, jedoch nicht in $ array2 .

2. Vergleichen Sie Objektattributunterschiede

Da PHP -Objekte durch Klassen definiert werden, haben sie keine Schlüssebernamen wie Arrays. Um die Eigenschaftenunterschiede zwischen zwei Objekten mit Array_Diff_key () zu vergleichen, müssen Sie das Objekt zunächst in ein Array umwandeln. Diese Transformation kann mit der Funktion get_object_vars () erreicht werden.

 <?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);

// verwenden array_diff_key Vergleichen Sie die Eigenschaftenunterschiede von Objekten
$diff = array_diff_key($array1, $array2);

// Ausgangsunterschied
print_r($diff);
?>

Ausgabe:

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

3. Erklären Sie den Code

  1. Definitionsklasse Person : Wir definieren eine Personklasse , die drei öffentliche Eigenschaften enthält: Name , Alter und E -Mail .

  2. Objekt erstellen : Zwei Personenobjekte Obj1 und OBJ2 werden erstellt, was unterschiedliche Personalinformationen darstellt.

  3. Konvertieren Sie in Array : Konvertieren Sie diese beiden Objekte in assoziative Arrays über die Funktion get_object_vars () .

  4. Vergleichsdifferenz : Verwenden Sie array_diff_key (), um die wichtigsten Unterschiede zwischen zwei Arrays zu vergleichen. Zu diesem Zeitpunkt gibt Array_Diff_key () die Attributschlüssel mit $ array1 zurück, jedoch nicht in $ array2 .

4. Ergebnisanalyse

In unserem Beispiel gibt Array_Diff_key () in unserem Beispiel die Eigenschaften von OBJ1 und OBJ2 genau das gleiche zurück. Sie können die Attribute des Objekts entsprechend den tatsächlichen Geschäftsanforderungen anpassen, damit Array_Diff_key () verschiedene Attribute anzeigen kann.

Angenommen, wir ändern OBJ2 so, dass es kein E -Mail -Attribut gibt:

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

Zu diesem Zeitpunkt wird die Ausführung von Array_Diff_key () feststellen, dass OBJ1 ein E -Mail -Attribut hat, während OBJ2 dies nicht tut.

5. Zusammenfassung

array_diff_key () ist ein sehr effektives Tool, das uns helfen kann, wichtige Unterschiede zwischen zwei Arrays oder Objekten zu vergleichen. In der tatsächlichen Entwicklung, insbesondere wenn Benutzerdaten, API -Anforderungen und andere Szenarien verarbeitet werden, kann es sehr bequem verwendet werden, um die Unterschiede in den Objekteigenschaften zu ermitteln. Durch Konvertieren von Objekten in Arrays kann Array_Diff_key () Unterschiede leicht identifizieren.

Hoffentlich kann dieser Artikel Ihnen helfen , die Funktion array_diff_key () besser zu verstehen und zu verwenden, um die Attributunterschiede zwischen den beiden Objekten zu vergleichen.