Heim  >  Artikel  >  Backend-Entwicklung  >  Wie finde ich Array-Unterschiede für Objekt-Arrays basierend auf einer Eigenschaftsspalte?

Wie finde ich Array-Unterschiede für Objekt-Arrays basierend auf einer Eigenschaftsspalte?

DDD
DDDOriginal
2024-10-23 14:40:57434Durchsuche

How to Find Array Difference for Object Arrays Based on a Property Column?

Ermitteln der Array-Differenz für Objekt-Arrays basierend auf der Eigenschaftsspalte

Im Bereich der PHP-Programmierung bieten die Funktionen array_diff und array_udiff Mittel zum Bestimmen der Unterschiede zwischen zwei Arrays. Beim Umgang mit Arrays von Objekten ist jedoch ein individueller Ansatz erforderlich.

Ein Array von Objekten, wie das hier gezeigte:

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

stellt eine einzigartige Herausforderung dar, insbesondere wenn man dies wünscht um den Unterschied anhand der Werte einer bestimmten Spalte zu bestimmen, wie etwa „id“ im Beispiel.

Um dieses Problem zu beheben, kommt uns die Funktion array_udiff zu Hilfe. Es benötigt einen dritten Parameter, eine benutzerdefinierte Funktion, die für den Vergleich der Objekte verantwortlich ist. Indem wir eine geeignete Vergleichsfunktion erstellen, können wir array_udiff anweisen, die gewünschte Operation auszuführen.

Hier ist ein Beispiel, wie dies erreicht werden kann:

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

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

In PHP 5.3 können anonyme Funktionen verwendet werden Anstatt eine separate Funktion zu deklarieren:

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

Mit diesen Techniken verfügen Sie jetzt über die Möglichkeit, den Unterschied zwischen Arrays von Objekten effektiv zu bestimmen, indem Sie die Werte aus jeder gewünschten Spalte oder Eigenschaft vergleichen.

Das obige ist der detaillierte Inhalt vonWie finde ich Array-Unterschiede für Objekt-Arrays basierend auf einer Eigenschaftsspalte?. 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