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:
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!