In PHP sind Array_filter () und Array_Map () zwei sehr leistungsstarke und häufig verwendete Array -Verarbeitungsfunktionen. Ersteres wird verwendet, um Elemente in einem Array zu filtern, während letzteres verwendet wird, um jedes Element im Array zu transformieren. Wenn Sie sie allein verwenden, können Sie viele Probleme lösen, aber die Verwendung der beiden zusammen kann Daten in komplexen Strukturen wie verschachtelten Arrays, Objektarrays oder Geschäftslogik effizienter verarbeiten, die mehrere Verarbeitungsschritte erfordert.
In diesem Artikel wird ein praktisches Beispiel verwendet, um zu demonstrieren, wie man Array_filter () und Array_Map () geschickt kombiniert, um die Filterung und Konvertierung komplexer Arrays zu implementieren.
Angenommen, wir haben eine Reihe von Benutzern, jeder Benutzer enthält Informationen wie Name, Alter, E -Mail -Adresse, Status usw. Unsere Ziele sind:
Nur Benutzer mit Status "aktiv" bleiben erhalten.
Konvertieren Sie den Namen jedes Benutzers in das Kapital.
Nur zwei Felder ausgeben: Name und Mailbox;
Das Beispiel -Original -Array lautet wie folgt:
$users = [
['name' => 'Alice', 'age' => 25, 'email' => 'alice@m66.net', 'status' => 'active'],
['name' => 'Bob', 'age' => 30, 'email' => 'bob@m66.net', 'status' => 'inactive'],
['name' => 'Charlie', 'age' => 22, 'email' => 'charlie@m66.net', 'status' => 'active'],
];
Verwenden wir zuerst Array_filter (), um Benutzer mit aktivem Status herauszufiltern:
$activeUsers = array_filter($users, function($user) {
return $user['status'] === 'active';
});
Nachdem dieser Schritt ausgeführt wurde, enthält $ ActiveUser nur Alice und Charlie.
Als nächstes nutzen wir den Namen mit Array_Map () und behalten nur die Felder, die uns wichtig sind (Name und E -Mail):
$transformedUsers = array_map(function($user) {
return [
'name' => strtoupper($user['name']),
'email' => $user['email']
];
}, $activeUsers);
Ausgangsergebnis:
[
['name' => 'ALICE', 'email' => 'alice@m66.net'],
['name' => 'CHARLIE', 'email' => 'charlie@m66.net']
]
Wenn Sie möchten, dass der Code prägnanter ist, können Sie die beiden Funktionen ketten. Obwohl Array_Filter () selbst das Array der Schlüsselresets nicht zurückgibt, funktioniert es mit array_values () besser:
$processedUsers = array_map(function($user) {
return [
'name' => strtoupper($user['name']),
'email' => $user['email']
];
}, array_values(array_filter($users, function($user) {
return $user['status'] === 'active';
})));
Das Kombinieren von Array_Filter () und Array_Map () kann es sehr flexibel machen, komplexe Arrays zu verarbeiten, wodurch logische Trennung von "zuerst Filter und dann konvertieren" wird. Diese Methode eignet sich sehr für die Verwendung in Szenarien wie der Verarbeitung von API -Datenrückgabe, der Vorbereitung des Formulars und der Geschäftsdatenfluss.
Vergessen Sie auch nicht, dass Sie, wenn Sie mit assoziativen Arrays zu tun haben oder Schlüsselnamen aufbewahren müssen, in Betracht ziehen , array_keys () , array_values () oder fortschrittlichere Funktionen wie Laravels Sammlungsklasse zu verwenden, um die Lesbarkeit und Funktionalität zu verbessern.