Beibehalten von Schlüsseln bei der Array-Filterung mit array_intersect_key und array_flip
In PHP kann die Funktion array_filter() verwendet werden, um Elemente aus einem Array zu entfernen basierend auf einer benutzerdefinierten Rückruffunktion. Der Rückruf empfängt jedoch nur die Werte des Arrays, nicht die Schlüssel.
Stellen Sie sich das Szenario vor, in dem Sie ein assoziatives Array ($my_array) und eine Liste zulässiger Schlüssel in einem indizierten Array ($allowed) haben. Das Ziel besteht darin, $my_array zu filtern und alle Schlüssel zu entfernen, die nicht in $allowed vorhanden sind.
Der effektivste Ansatz besteht darin, die Funktionen array_intersect_key und array_flip zu nutzen. Die Funktion array_intersect_key filtert die Schlüssel-Wert-Paare eines Arrays basierend auf den Schlüsseln, die in einem anderen Array vorhanden sind. Die Funktion array_flip dreht die Schlüssel und Werte eines Arrays um und erstellt so effektiv eine Zuordnung zwischen Werten und Schlüsseln.
Durch die Kombination dieser Funktionen können Sie die gewünschte Filterung erreichen:
$filtered_array = array_intersect_key($my_array, array_flip($allowed));
Dieser Code erstellt ein neues Array ($filtered_array), das nur die Schlüssel-Wert-Paare von $my_array enthält, wobei die Schlüssel in $allowed vorhanden sind. Das Ergebnis ist identisch mit der gewünschten Ausgabe:
array( ["foo"] => 1 )
Das obige ist der detaillierte Inhalt vonWie kann ich Schlüssel beim Filtern eines Arrays in PHP beibehalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!