Aktueller Standort: Startseite> Neueste Artikel> Verwenden Sie Array_flip () und Array_intersect_key (), um die Array -Filterung durchzuführen

Verwenden Sie Array_flip () und Array_intersect_key (), um die Array -Filterung durchzuführen

M66 2025-05-14

In der täglichen PHP -Entwicklung müssen wir häufig Arrays basierend auf bestimmten "Whitelist -Schlüssel" oder "Blacklist -Schlüssel" filtern. Die von PHP bereitgestellten Funktionen Array_flip () und Array_intersect_key () können diese Anforderung sehr effizient erreichen. In diesem Artikel werden spezifische Codebeispiele verwendet, um vorzustellen, wie diese beiden Funktionen verwendet werden, um die Aufgabe der Array -Filterung zu vervollständigen.

1. Funktion Einführung

1. Array_flip ()

Diese Funktion wird verwendet, um Schlüssel und Werte in einem Array auszutauschen.

 array_flip(array $array): array
  • Eingabe: ein Array.

  • Ausgabe: Das Array, nachdem das Schlüsselwertpaar umgedreht wurde (Hinweis: Der Wert des ursprünglichen Arrays muss eindeutig sein und kann als skalarer Wert für den Schlüssel verwendet werden).

2. Array_intersect_key ()

Diese Funktion wird verwendet, um Elemente im Array zurückzugeben, in dem auch alle Schlüssel in einem anderen Array existieren.

 array_intersect_key(array $array, array ...$arrays): array
  • Eingabe: Zwei oder mehr Arrays.

  • Ausgabe: Nur Elemente im ersten Array, die gleichzeitig in allen nachfolgenden Arrays erscheinen.

2. Beispiele für Nutzungsszenarien

Filter Benutzereingabefelder und nur zulässige Schlüssel halten

Angenommen, wir erhalten die folgenden Daten aus dem Benutzerformular:

 $userInput = [
    'username' => 'john_doe',
    'password' => '123456',
    'email' => 'john@example.com',
    'token' => 'abcd1234',  // Illegale Felder
];

Wir möchten nur die drei Felder "Benutzernamen" , "Passwort" und "E -Mail" behalten, und die anderen sollten herausgefiltert werden.

Verwenden Sie Array_flip () + arrray_intersect_key (), um die Filterung zu implementieren:

 $allowedKeys = ['username', 'password', 'email'];

// Ändern Sie erlaubte Schlüssel zu Schlüsselnamen
$allowedKeysFlipped = array_flip($allowedKeys);

// Holen Sie sich die Kreuzung,Halten Sie Felder mit dem gleichen Schlüssel
$filteredInput = array_intersect_key($userInput, $allowedKeysFlipped);

print_r($filteredInput);

Ausgangsergebnis:

 Array
(
    [username] => john_doe
    [password] => 123456
    [email] => john@example.com
)

Auf diese Weise können wir Arrays flexibel und sicher filtern und vermeiden, dass illegale Felder weiterhin verarbeitet oder sogar in die Datenbank geschrieben werden.

3. Erweitern Sie die Nutzung: Filter -API -Parameter filtern

Angenommen, Sie haben eine API -Schnittstelle entwickelt und die folgenden URL -Parameter erhalten:

 https://m66.net/api/user/update?username=jane&password=78910&is_admin=1

Sie möchten nicht, dass der Client sensible Felder wie IS_ADMIN nach Belieben ändert und nur den Benutzernamen und das Kennwort aktualisiert.

Sie können das tun:

 $input = $_GET;

$allowed = ['username', 'password'];

$safeInput = array_intersect_key($input, array_flip($allowed));

// Jetzt $safeInput Enthält nur erlaubte Felder

Diese Methode kann den Whitelisting -Mechanismus von API -Parametern leicht implementieren und die Sicherheit verbessern.

4. Zusammenfassung

Durch Kombinieren von Array_flip () und Array_intersect_key () können wir wichtige Filtervorgänge von Arrays sehr bequem implementieren. Dieser Ansatz ist nicht nur präzise in Code und hoher Leistung, sondern auch einfach zu warten. Es eignet sich für die Formverarbeitung, die API -Parameterfilterung und andere Szenarien.

In der tatsächlichen Entwicklung wird empfohlen, diese Logik in eine Funktion zu integrieren, beispielsweise:

 function filter_array_keys(array $data, array $allowedKeys): array {
    return array_intersect_key($data, array_flip($allowedKeys));
}

Auf diese Weise ist Ihr Code modularer und lesbarer.