Heim >Backend-Entwicklung >PHP-Tutorial >Wie filtere ich ein assoziatives Array basierend auf Schlüsseln, die in einem indizierten Array gefunden werden?

Wie filtere ich ein assoziatives Array basierend auf Schlüsseln, die in einem indizierten Array gefunden werden?

Linda Hamilton
Linda HamiltonOriginal
2024-12-24 02:44:14615Durchsuche

How to Filter an Associative Array Based on Keys Found in an Indexed Array?

Assoziative Array-Schlüssel anhand indizierter Array-Werte prüfen

Das Filtern eines assoziativen Arrays durch Vergleich seiner Schlüssel mit Werten aus einem indizierten Array kann eine Herausforderung sein , da die Callback-Funktion in array_filter() nur Zugriff auf Werte bietet. Es gibt jedoch eine Lösung mit einer Kombination aus array_intersect_key und array_flip.

Stellen Sie sich das folgende Szenario vor:

$my_array = ["foo" => 1, "hello" => "world"];
$allowed = ["foo", "bar"];

Unser Ziel ist es, alle Schlüssel in $my_array auszuschließen, die nicht in $allowed gefunden werden , was zur gewünschten Ausgabe führt:

$my_array = ["foo" => 1];

Lösung mit array_intersect_key und array_flip:

  1. Verwenden Sie array_intersect_key, um die Schlüssel von $my_array mit den Werten von $allowed zu vergleichen. Möglich wird dies durch die Funktion array_flip, die die Schlüssel und Werte eines Arrays austauscht.
  2. Das resultierende Array enthält nur Schlüssel aus $my_array, die auch in $allowed vorhanden sind.
$filtered_array = array_intersect_key($my_array, array_flip($allowed));

Ausgabe:

var_dump($filtered_array);

array(1) {
  ["foo"]=>
  int(1)
}

Das obige ist der detaillierte Inhalt vonWie filtere ich ein assoziatives Array basierend auf Schlüsseln, die in einem indizierten Array gefunden werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn