Array_Diff_Uassoc ist eine Funktion, die in PHP zum Vergleich von zwei Arrays verwendet wird. Es vergleicht nicht nur die Werte des Arrays, sondern auch die Schlüssel des Arrays. In einigen Fällen möchten wir beim Vergleich eine benutzerdefinierte Vergleichsfunktion verwenden. Diese benutzerdefinierte Vergleichsfunktion kann beim Vergleich von Array -Werten und -tasten häufig zusätzliche Logik hinzufügen. Wenn Sie jedoch externe Variablen in Vergleichsfunktionen verwenden müssen (z. B. globale Variablen oder Parameter, die an die Funktion übergeben werden), müssen Sie besondere Aufmerksamkeit darauf achten, wie sie in einer benutzerdefinierten Funktion korrekt auf diese externen Variablen beziehen.
In diesem Artikel wird erläutert, wie externe Variablen in benutzerdefinierten Vergleichsfunktionen korrekt verwendet werden, wenn Sie array_diff_uassoc verwenden.
Array_Diff_Uassoc ist eine von PHP bereitgestellte Array -Funktion, die mehrere Arrays als Parameter nimmt und ein neues Array zurückgibt, das Elemente im ersten Array enthält, jedoch nicht in anderen Arrays. Es ähnelt dem Array_Diff_assoc , ermöglicht dem Benutzer jedoch eine benutzerdefinierte Vergleichsfunktion zum Vergleichen von Schlüssel mit Arrays.
Der Funktionsprototyp lautet wie folgt:
array array_diff_uassoc ( array $array1 , array $array2 , array ...$arrays , callable $key_compare_func )
$ array1 ist das erste Array, das zum Vergleich verwendet wird.
$ array2, ... $ arrays ist ein oder mehrere Arrays zum Vergleich.
$ key_compare_func ist eine benutzerdefinierte Rückruffunktion, die zum Vergleich von Tasten von Arrays verwendet wird.
Beim Schreiben benutzerdefinierter Vergleichsfunktionen müssen wir manchmal externe Variablen verwenden (z. B. einige globale Einstellungen oder Parameter von außerhalb der Funktion). In PHP können anonyme Funktionen (Verschlüsse) jedoch nicht direkt auf extern abkopierte Variablen zugreifen, es sei denn, wir übergeben diese Variablen explizit an die Funktion.
Angenommen, wir haben zwei Arrays, $ Array1 und $ Array2 , wir möchten die Schlüssel dieser beiden Arrays vergleichen und während des Vergleichs eine extern definierte Variable (z. B. eine festgelegte Schwelle) verwenden. Wir werden ein Beispiel verwenden, um zu demonstrieren, wie es geht.
<?php
// Externe Variablen:Eine Schwelle
$threshold = 5;
// Benutzerdefinierte Vergleichsfunktionen
function compare_keys($a, $b) {
global $threshold; // Referenz externe globale Variablen $threshold
// Wenn die beiden Schlüssel gleich sind,zurückkehren 0
if ($a === $b) {
return 0;
}
// Vergleich unter Verwendung externer Schwellenwerte
return abs($a - $threshold) < abs($b - $threshold) ? -1 : 1;
}
// Vergleich von zwei Arrays
$array1 = [3 => 'apple', 7 => 'banana', 10 => 'cherry'];
$array2 = [2 => 'pear', 7 => 'grape', 9 => 'orange'];
// verwenden array_diff_uassoc Und in einer benutzerdefinierten Vergleichsfunktion übergeben
$result = array_diff_uassoc($array1, $array2, 'compare_keys');
print_r($result);
?>
Globale Variable $ Threshold : Wir definieren eine externe Variable $ threshold , um einen "Referenz" -Wert zu festlegen, wenn wir Schlüssel vergleichen.
Benutzerdefinierte Vergleichsfunktion Compare_keys : Diese Funktion akzeptiert zwei Parameter $ A und $ B , die die beiden verglichenen Schlüssel darstellen. Wir verwenden Global $ Threshold , um diese Funktion zu ermöglichen, auf die externe Variable von $ Threshold zuzugreifen. In der Funktion berechnen wir den Abstand zwischen dem Schlüssel und dem $ -Wellenwert und geben das Vergleichsergebnis zurück.
Verwendung von Array_Diff_Uassoc : Beim Aufrufen von Array_Diff_Uassoc übergeben wir die Arrays $ Array1 und $ Array2 als Parameter und übergeben die benutzerdefinierte Vergleichsfunktion Compare_Keys . Diese Funktion wird beim Vergleich von Array -Tasten automatisch aufgerufen.
Ausgabeergebnis : Drucken Sie das Ergebnis über print_r aus. Sie können sehen, welche Elemente in $ array1, jedoch nicht in $ array2 sind, und basieren auf unseren individuellen Vergleichsregeln.
Wenn Sie bei Verwendung von PHP von Array_Diff_Uassoc externe Variablen in einer benutzerdefinierten Vergleichsfunktion verwenden müssen, können Sie diese auf folgende Weise implementieren:
Referenz globale Variablen mit globalen Schlüsselwörtern.
Übergeben Sie externe Variablen als Parameter an eine benutzerdefinierte Vergleichsfunktion (verwenden Sie beispielsweise das Schlüsselwort verwenden , um externe Variablen in einer anonymen Funktion einzuführen).
Stellen Sie sicher, dass der Rückgabewert der Vergleichsfunktion die Anforderungen von Array_Diff_Uassoc entspricht und die wichtige Vergleichslogik korrekt behandelt.
Hoffentlich hilft Ihnen dieses Beispiel zu verstehen, wie Sie externe Variablen in Array_Diff_Uassoc korrekt verwenden und in der tatsächlichen Entwicklung praktisch sein.