Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann der Unterschied zwischen Objektarrays durch Vergleich spezifischer Eigenschaftswerte ermittelt werden?

Wie kann der Unterschied zwischen Objektarrays durch Vergleich spezifischer Eigenschaftswerte ermittelt werden?

Linda Hamilton
Freigeben: 2024-10-23 18:18:17
Original
729 Leute haben es durchsucht

How to Determine the Difference Between Object Arrays by Comparing Specific Property Values?

Bestimmen des Unterschieds zwischen zwei Arrays von Objekten durch Vergleich spezifischer Eigenschaftswerte

Frage:

Legacy-Funktionen wie array_diff und array_udiff sind für den Vergleich von Arrays mit Skalarwerten konzipiert. Wie können wir den Unterschied zwischen zwei Arrays von Objekten ermitteln, die wir anhand eines bestimmten Eigenschaftswerts vergleichen möchten?

Lösung:

Glücklicherweise kann array_udiff genutzt werden um dieser Anforderung gerecht zu werden. Wir definieren eine benutzerdefinierte Vergleichsfunktion, die sich auf die gewünschte Eigenschaft konzentriert, und verwenden dann array_udiff, um den Unterschied zwischen den beiden Arrays zu bestimmen.

Betrachten Sie die folgenden Beispielarrays:

<code class="php">$array1 = array(
    (object) ['id' => '205', 'day_id' => '12'],
    ...
);

$array2 = array(
    (object) ['id' => '205', 'day_id' => '13'],
    ...
);</code>
Nach dem Login kopieren

Unser Ziel ist um die Unterschiede zwischen diesen Arrays anhand der ID-Eigenschaft zu identifizieren. Um dies zu erreichen, können wir eine Vergleichsfunktion erstellen:

<code class="php">function compare_objects($obj_a, $obj_b) {
  return $obj_a->id - $obj_b->id;
}</code>
Nach dem Login kopieren

Diese Funktion vergleicht die ID-Eigenschaft zweier Objekte und gibt die Differenz als Ganzzahl zurück. Anschließend verwenden wir array_udiff wie folgt:

<code class="php">$diff = array_udiff($array1, $array2, 'compare_objects');</code>
Nach dem Login kopieren

Alternativ können wir mit PHP 5.3 und höher eine anonyme Funktion zum Vergleich verwenden:

<code class="php">$diff = array_udiff($array1, $array2,
  function ($obj_a, $obj_b) {
    return $obj_a->id - $obj_b->id;
  }
);</code>
Nach dem Login kopieren

Diese Lösung berechnet effektiv die Differenz zwischen zwei Arrays von Objekten durch Vergleich des angegebenen Eigenschaftswerts. Das resultierende $diff-Array enthält Objekte, die die eindeutigen Elemente von entweder $array1 oder $array2 basierend auf den Vergleichskriterien darstellen.

Das obige ist der detaillierte Inhalt vonWie kann der Unterschied zwischen Objektarrays durch Vergleich spezifischer Eigenschaftswerte ermittelt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage