In PHP ist Array_Diff_Uassoc () eine sehr nützliche Funktion, die zwei Arrays vergleicht und die Differenz basierend auf den Rückruffunktionen der Schlüsselwerte beurteilt. Diese Funktion funktioniert sehr gut, wenn Sie ein Objekt haben und es in ein Array umwandeln möchten, um die Unterschiede zu vergleichen.
Array_Diff_Uassoc () wird verwendet, um die Unterschiede zwischen Schlüsselwertpaaren von zwei Arrays zu vergleichen und eine benutzerdefinierte Rückruffunktion zu verwenden, um festzustellen, wie die Unterschiede verglichen werden. Die Syntax ist wie folgt:
array_diff_uassoc(array $array1, array $array2, callable $key_compare_func) : array
Array1 und Array2 : Diese beiden Arrays sind die Arrays, die verglichen werden sollen.
KEY_COMPare_Func : Dies ist eine Rückruffunktion, mit der Tasten eines Arrays verglichen werden.
Diese Funktion gibt ein Array zurück, das Unterschiede enthält, wobei jeder Differenzterm vom ersten Array ( Array1 ) stammt und im zweiten Array ( Array2 ) nicht erscheint.
Angenommen, Sie haben zwei Objekte und möchten die Unterschiede zwischen ihnen nach dem Umwandeln der Objekte in ein Array vergleichen. Lassen Sie uns zunächst zwei einfache Klassen definieren:
class Product {
public $id;
public $name;
public $price;
public function __construct($id, $name, $price) {
$this->id = $id;
$this->name = $name;
$this->price = $price;
}
}
$product1 = new Product(1, "Apple", 100);
$product2 = new Product(2, "Banana", 50);
$product3 = new Product(3, "Cherry", 75);
// Umwandeln Sie Objekte in Arrays
$array1 = (array)$product1;
$array2 = (array)$product2;
$array3 = (array)$product3;
Nach dem Umwandlung des Objekts in ein Array können wir Array_Diff_Uassoc () verwenden, um die Unterschiede zwischen diesen Arrays zu vergleichen.
Wir definieren eine Rückruffunktion, um die Schlüssel von zwei Arrays zu vergleichen. In diesem Beispiel vergleichen wir einfach die Schlüsselnamen:
function compare_keys($key1, $key2) {
return strcmp($key1, $key2);
}
// verwenden array_diff_uassoc() Vergleich der Unterschiede zwischen zwei Arrays
$diff1 = array_diff_uassoc($array1, $array2, 'compare_keys');
$diff2 = array_diff_uassoc($array1, $array3, 'compare_keys');
// Ausgangsergebnis
print_r($diff1);
print_r($diff2);
In diesem Beispiel wird Array_diff_uassoc () $ arrray1 und $ array2 , $ array1 und $ array3 vergleichen und ihre Unterschiede zurückgeben.
Der Ausgangsunterschied zeigt die Teile der beiden Arrays mit unterschiedlichen Schlüssel und Werten. Sie können die Rückruffunktion entsprechend den tatsächlichen Bedürfnissen anpassen, um bestimmte Vergleichsanforderungen zu erfüllen.
Der Vorteil der Verwendung von array_diff_uassoc () besteht darin, dass Sie nicht nur die Werte des Arrays vergleichen, sondern auch die Schlüssel des Arrays gemäß den benutzerdefinierten Regeln vergleichen können. Dies ist sehr nützlich, um die Unterschiede in den Array -Eigenschaften von Objekten zu vergleichen, insbesondere wenn die Datenstruktur relativ komplex ist.
Durch die Konvertierung des Objekts in ein Array und die Verwendung von Array_Diff_Uassoc () können wir die Eigenschaftenunterschiede zwischen den beiden Objekten leicht vergleichen. array_diff_uassoc () bietet einen flexiblen Rückrufmechanismus, wodurch er nicht nur für reguläre Array -Vergleiche geeignet ist, sondern auch für angepasste Vergleiche, die auf speziellen Schlüsselregeln basieren.