Heim > Backend-Entwicklung > PHP-Tutorial > Wie finde ich den Unterschied zwischen Arrays von Objekten basierend auf Spaltenwerten?

Wie finde ich den Unterschied zwischen Arrays von Objekten basierend auf Spaltenwerten?

Susan Sarandon
Freigeben: 2024-10-23 17:58:14
Original
614 Leute haben es durchsucht

How to Find the Difference Between Arrays of Objects Based on Column Values?

Den Unterschied zwischen Arrays von Objekten anhand von Spaltenwerten ermitteln

Das Bestimmen der Unterschiede zwischen zwei Arrays von Objekten kann bei Verwendung herkömmlicher Arrays eine Herausforderung sein -Vergleichsfunktionen wie array_diff oder array_udiff. Es kann jedoch eine benutzerdefinierte Funktion verwendet werden, um den Vergleich spezifischer Objekteigenschaften zu erleichtern.

Betrachten Sie das folgende Array von Objekten:

<code class="php">array(4) {
    [0]=>
        object(stdClass)#32 (9) {
            [&quot;id&quot;]=>
            string(3) &quot;205&quot;
            [&quot;day_id&quot;]=>
            string(2) &quot;12&quot;
        }
}</code>
Nach dem Login kopieren

Um den Unterschied zwischen zwei solchen Arrays basierend auf zu identifizieren In der Spalte „id“ kann eine benutzerdefinierte Vergleichsfunktion definiert werden:

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

Diese Funktion subtrahiert die „id“-Eigenschaften zweier Objekte, was zu einem numerischen Wert führt, der den Unterschied zwischen ihnen angibt.

Der folgende Code verwendet die Funktion „compare_objects“, um den Unterschied zwischen zwei Arrays von Objekten zu bestimmen:

<code class="php">$first_array = // Array of objects
$second_array = // Array of objects

$diff = array_udiff($first_array, $second_array, 'compare_objects');</code>
Nach dem Login kopieren

Die Funktion „array_udiff“ vergleicht die Objekte im ersten und zweiten Array mithilfe der Funktion „compare_objects“. Das in $diff gespeicherte Ergebnis enthält die Objekte, die in einem Array vorhanden sind, im anderen jedoch nicht.

In PHP >= 5.3 kann eine anonyme Funktion anstelle einer benannten Funktion verwendet werden:

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

Dieser optimierte Ansatz erreicht die gleiche Funktionalität wie die Funktion „compare_objects“. Die Verwendung dieser benutzerdefinierten Vergleichsmethoden ermöglicht die effiziente Identifizierung von Unterschieden zwischen Arrays von Objekten basierend auf bestimmten Spaltenwerten.

Das obige ist der detaillierte Inhalt vonWie finde ich den Unterschied zwischen Arrays von Objekten basierend auf Spaltenwerten?. 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