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) { ["id"]=> string(3) "205" ["day_id"]=> string(2) "12" } }</code>
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>
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>
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>
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!