Heim  >  Artikel  >  Backend-Entwicklung  >  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
Linda HamiltonOriginal
2024-10-23 18:18:17645Durchsuche

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>

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>

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>

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>

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!

Stellungnahme:
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