Aktueller Standort: Startseite> Neueste Artikel> Array_flip () + array_diff_key () implementiert die Differentialoperation

Array_flip () + array_diff_key () implementiert die Differentialoperation

M66 2025-05-18

In PHP gibt es viele Möglichkeiten, Array -Differenzsätze zu verarbeiten. Zusätzlich zur Funktion der Common Array_Diff () können Sie auch Array_flip () und Array_Diff_key () Funktionen verwenden, um eine flexible Differenz -Set -Berechnung über die "Schlüssel" zu erzielen. Diese Methode ist besonders effizient und praktisch, wenn es sich um die "Schlüsselwertunterschiede" zwischen zwei Arrays handelt.

1. Überprüfung der grundlegenden Konzepte

1. Array_flip ()

Array_flip () tauschte die Schlüssel und Werte des Arrays austauschend . Dies bedeutet, dass der ursprüngliche Wert ein Schlüssel wird und der Schlüssel zum Wert wird.

 $input = ['apple' => 'red', 'banana' => 'yellow'];
$result = array_flip($input);

// Ausgabe:['red' => 'apple', 'yellow' => 'banana']

Hinweis: Wenn im Originalarray doppelte Werte vorhanden sind, wird Array_flip () die Duplikate verworfen und nur die letzte wird beibehalten.

2. Array_diff_key ()

Array_diff_key () wird verwendet, um Schlüssel von zwei oder mehr Arrays zu vergleichen und Schlüsselwertpaare zurückzugeben, die im ersten Array vorhanden sind, aber nicht in anderen Arrays erscheinen .

 $array1 = ['a' => 1, 'b' => 2, 'c' => 3];
$array2 = ['b' => 99];

$result = array_diff_key($array1, $array2);

// Ausgabe:['a' => 1, 'c' => 3]

2. Verwenden Sie Array_flip + array_diff_key, um "Wertdifferenzsatz" zu implementieren.

Angenommen, wir haben zwei Arrays und möchten den eindeutigen Wert (d. H. Der Differenzsatz) im ersten Array finden, wir können die Kombination von Array_Flip () und Array_Diff_Key () geschickt verwenden, um ihn zu erreichen.

Beispielcode:

 $groupA = ['apple', 'banana', 'cherry'];
$groupB = ['banana', 'grape'];

// Wert in Schlüssel konvertieren
$flippedA = array_flip($groupA);
$flippedB = array_flip($groupB);

// Differentialoperation(passieren key Unterschied)
$diff = array_diff_key($flippedA, $flippedB);

// Zu einem Normalwert -Array wiederhergestellt
$uniqueToA = array_keys($diff);

print_r($uniqueToA);

Ausgangsergebnis:

 Array
(
    [0] => apple
    [1] => cherry
)

Wir haben erfolgreich den Wert gefunden, der in $ Groupa , aber nicht in $ gruppeb liegt.

3. Beispiele für Anwendungsszenarien

Diese Methode ist für die folgenden Szenarien sehr geeignet:

  • Ermitteln Sie schnell den Unterschied zwischen zwei Etikettenarrays;

  • Benutzerberechtigungsfilterung (finden Sie Funktionen, die der Benutzer zur Berechtigung verfügt, aber das Modul wird nicht verwendet).

  • Vergleichsunterschiede für mehrere Optionen usw. bilden.

Beispielsweise entwickeln Sie ein Benutzerberechtigungssystem und die Berechtigungen des aktuellen Benutzers sind:

 $userPermissions = ['edit', 'delete', 'create'];

Die von einem bestimmten Modul unterstützten Operationen sind:

 $moduleSupports = ['edit', 'create'];

Sie können die Berechtigungen herausfinden, die der Benutzer hat, das Modul jedoch nicht auf die gleiche Weise unterstützt:

 $diff = array_keys(array_diff_key(
    array_flip($userPermissions),
    array_flip($moduleSupports)
));

// Ausgabe ['delete']

4. Zusammenfassung

Obwohl PHP einen Differenzsatz liefert, der direkt für die Bewertung verwendet wird, ist in einigen raffinierteren Szenarien (z. B. wenn der Wert eindeutig ist) die Kombination von Array_flip ( ) und Array_Diff_Key () nicht nur effizienter, sondern bietet auch flexiblere Betriebsmethoden.

Diese Art von Trick kann eine höhere Leistung erzielen, insbesondere wenn es sich um große Arrays handelt oder wenn sie die Betreiber vergleichenden, erforderlich sind.