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

Wie filtere ich ein assoziatives Array in PHP basierend auf Schlüsseln aus einem indizierten Array?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-13 08:39:10388Durchsuche

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

Filtern eines assoziativen Arrays basierend auf Schlüsseln in einem indizierten Array

In PHP bietet array_filter() eine praktische Methode zum Filtern assoziativer Arrays basierend auf ihre Werte. Allerdings berücksichtigt diese Funktion nur die Werte, sodass Programmierer nach einer Möglichkeit suchen, Schlüssel basierend auf einer Reihe zulässiger Werte zu filtern. Diese Frage befasst sich mit dieser Herausforderung.

Angesichts eines assoziativen Arrays ($my_array) und eines indizierten Arrays zulässiger Schlüssel ($allowed) besteht die Aufgabe darin, alle Schlüssel aus $my_array zu entfernen, die nicht in $allowed vorhanden sind. Die gewünschte Ausgabe ist ein $my_array, das nur die Schlüssel-Wert-Paare enthält, bei denen sich die Schlüssel in $allowed befinden.

Lösung:

Die Antwort schlägt die Verwendung von zwei Array-Manipulationen vor Funktionen:

  • array_intersect_key(): Diese Funktion führt einen Vergleich zwischen durch zwei Arrays mit ihren Schlüsseln. Sie gibt ein neues Array zurück, das nur Schlüssel enthält, die in beiden Arrays vorhanden sind.
  • array_flip(): Diese Funktion dreht die Schlüssel und Werte eines assoziativen Arrays um und wandelt seine Schlüssel effektiv in Werte und um umgekehrt.

Durch die Kombination dieser beiden Funktionen können Sie das assoziative Array filtern als folgt:

$filtered_array = array_intersect_key($my_array, array_flip($allowed));

Hier erstellt array_flip($allowed) ein neues Array, in dem die Werte von $allowed zu Schlüsseln werden und die Schlüssel zu Werten werden. array_intersect_key($my_array, ...) vergleicht dann $my_array mit dem umgedrehten Array und gibt ein Array zurück, das nur die zulässigen Schlüssel als Schlüssel und die zugehörigen Werte enthält.

Beispiel:

Anhand des bereitgestellten Beispiels:

$my_array = array("foo" => 1, "hello" => "world");
$allowed = array("foo", "bar");

Das resultierende $filtered_array würde sein:

array("foo" => 1);

Das obige ist der detaillierte Inhalt vonWie filtere ich ein assoziatives Array in PHP basierend auf Schlüsseln aus einem indizierten Array?. 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