In PHP ist die Funktion array_intersect_uassoc ein sehr leistungsstarkes Tool, mit dem Entwickler zwei oder mehr Arrays vergleichen und filtern, insbesondere wenn es sich um komplexe mehrdimensionale Arrays handelt. Durch diese Funktion können wir die Schlüssel und Werte des Arrays basierend auf der benutzerdefinierten Rückruffunktion vergleichen und dann die Array-Elemente erhalten, die den Bedingungen erfüllen. In diesem Artikel werden wir eingehend untersuchen, wie man Array_intersect_Uassoc verwendet, um komplexe mehrdimensionale Arrays zu verarbeiten und Antragsbeispiele basierend auf tatsächlichen Szenarien anzugeben.
Die Funktion array_intersect_uassoc gibt den Schnittpunkt zwischen zwei oder mehr Arrays zurück, die basierend auf einer benutzerdefinierten Tastenwertvergleichsfunktion verglichen werden. Die Funktion ist wie folgt definiert:
array_intersect_uassoc(array $array1, array $array2, callable $value_func)
$ Array1 : Das erste Array.
$ array2 : Das zweite Array.
$ value_func : benutzerdefinierte Rückruffunktion zum Vergleichen von Schlüssel und Werten in einem Array.
Diese Funktion unterscheidet sich vom regulären Array_intersect , der nur die Werte des Array vergleicht, und array_intersect_uassoc ermöglicht es Ihnen, eine benutzerdefinierte Funktion anzugeben, um die Übereinstimmungen von Schlüssel und Werten zu vergleichen.
Oft begegnen wir Situationen, in denen wir beim Umgang mit mehrdimensionalen Arrays eine feinere Filterung durchführen müssen, insbesondere wenn wir nicht nur mit der Übereinstimmung der Array -Werte, sondern auch mit den Schlüssel oder komplexen Bedingungen des Arrays besorgt sind. Array_intersect_uassoc ist ein ideales Instrument zur Lösung solcher Probleme.
In der Datenverarbeitung von E-Commerce-Plattformen müssen wir beispielsweise Produktinformationen herausfiltern, die den Preis, die Menge, die SKU und andere Bedingungen von zwei verschiedenen Arrays entsprechen. Zu diesem Zeitpunkt kann die Rolle von Array_intersect_Uassoc nicht ignoriert werden.
Angenommen, wir haben zwei mehrdimensionale Arrays, die detaillierte Informationen für verschiedene Produkte enthalten. Wir müssen dasselbe Produkt aus diesen beiden Arrays basierend auf bestimmten gemeinsamen Bedingungen wie SKU und dem Preis des Produkts herausfinden.
$array1 = [
101 => ['sku' => 'A123', 'price' => 100, 'name' => 'Product 1'],
102 => ['sku' => 'B234', 'price' => 150, 'name' => 'Product 2'],
103 => ['sku' => 'C345', 'price' => 200, 'name' => 'Product 3'],
];
$array2 = [
201 => ['sku' => 'A123', 'price' => 100, 'name' => 'Product 1'],
202 => ['sku' => 'B234', 'price' => 140, 'name' => 'Product 2'],
203 => ['sku' => 'D456', 'price' => 250, 'name' => 'Product 4'],
];
Wir brauchen eine Rückruffunktion, um zu vergleichen, ob SKU und Preis gleich sind:
function compare_product($a, $b) {
// Vergleichen sku Und price
return ($a['sku'] === $b['sku'] && $a['price'] === $b['price']) ? 0 : 1;
}
$result = array_intersect_uassoc($array1, $array2, 'compare_product');
print_r($result);
Array
(
[101] => Array
(
[sku] => A123
[price] => 100
[name] => Product 1
)
)
In diesem Beispiel passen wir die Funktion compare_product an, und Array_intersect_Uassoc behält diese passenden Produkte nur, wenn die Produkte SKU und der Preis in beiden Arrays gleich sind.
Array_intersect_uassoc ist ein sehr nützliches Werkzeug, wenn wir Arrays basierend auf mehreren Attributen vergleichen und filtern müssen. Wenn Sie beispielsweise gleichzeitig den SKU , den Preis und den Namen des Produkts des Produkts vergleichen möchten, stellen Sie einfach die Rückruffunktion an.
function compare_complex_product($a, $b) {
return ($a['sku'] === $b['sku'] && $a['price'] === $b['price'] && $a['name'] === $b['name']) ? 0 : 1;
}
array_intersect_uassoc ist nicht nur zum Vergleich von zwei Arrays geeignet, sondern kann auch eine Schnittfilterung in mehreren Arrays durchführen. Wenn Sie beispielsweise mehr als drei Arrays vergleichen müssen, können Sie diese Funktion dennoch verwenden und mehr Arrays als Parameter übergeben.
$array3 = [
301 => ['sku' => 'A123', 'price' => 100, 'name' => 'Product 1'],
302 => ['sku' => 'C345', 'price' => 200, 'name' => 'Product 3'],
];
$result = array_intersect_uassoc($array1, $array2, $array3, 'compare_product');
Array_intersect_uassoc ist ein leistungsstarkes Werkzeug zum Umgang mit komplexen mehrdimensionalen Arrays. Es verwendet eine benutzerdefinierte Rückruffunktion, mit der Sie Arrays basierend auf Schlüsselwerten vergleichen können, wodurch Elemente, die den Kriterien erfüllen, leicht herausfiltern können. Unabhängig davon, ob es sich um einfache Schlüsselwertvergleiche oder eine komplexe mehrdimensionale Array-Filterung handelt, bietet es viel Flexibilität und Hilfe.
Wenn Sie diese Funktion nicht verwendet haben, können Sie sie auch in einem realen Projekt anwenden, um einige komplexe Datenverarbeitungsprobleme zu lösen.