Position actuelle: Accueil> Derniers articles> array_filter () + array_map () implémente la conversion et le filtrage du tableau complexe

array_filter () + array_map () implémente la conversion et le filtrage du tableau complexe

M66 2025-06-04

Dans PHP, array_filter () et array_map () sont deux fonctions de traitement de la table très puissantes et couramment utilisées. Le premier est utilisé pour filtrer les éléments dans un tableau, tandis que le second est utilisé pour transformer chaque élément dans le tableau. Les utiliser seuls peut résoudre de nombreux problèmes, mais l'utilisation des deux ensemble peut traiter plus efficacement les données dans des structures complexes, telles que des tableaux imbriqués, des tableaux d'objets ou une logique métier qui nécessite plusieurs étapes de traitement.

Cet article utilisera un exemple pratique pour démontrer comment combiner intelligemment array_filter () et array_map () pour implémenter le filtrage et la conversion de tableaux complexes.

1. Introduction de la scène

Supposons que nous ayons un éventail d'utilisateurs, chaque utilisateur contient des informations telles que le nom, l'âge, l'adresse e-mail, le statut, etc. Nos objectifs sont:

  • Seuls les utilisateurs ayant un statut "actif" sont conservés;

  • Convertir le nom de chaque utilisateur en capital;

  • Sortir uniquement deux champs: nom et boîte aux lettres;

L'exemple de tableau d'origine est le suivant:

 $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'],
];

2. Utilisez array_filter () pour filtrer

Utilisons d'abord array_filter () pour filtrer les utilisateurs avec un état actif:

 $activeUsers = array_filter($users, function($user) {
    return $user['status'] === 'active';
});

Une fois cette étape exécutée, $ ActiveUsers ne contient qu'Alice et Charlie.

3. Utilisez array_map () pour convertir

Ensuite, nous capitalisons le nom avec array_map () et conservons uniquement les champs dont nous nous soucions (nom et e-mail):

 $transformedUsers = array_map(function($user) {
    return [
        'name' => strtoupper($user['name']),
        'email' => $user['email']
    ];
}, $activeUsers);

Résultat de sortie:

 [
    ['name' => 'ALICE', 'email' => 'alice@m66.net'],
    ['name' => 'CHARLIE', 'email' => 'charlie@m66.net']
]

4. Techniques de traitement de la chaîne (facultative)

Si vous voulez que le code soit plus concis, vous pouvez enchaîner les deux fonctions. Bien que Array_Filter () lui-même ne renvoie pas le tableau de réinitialisation des clés, il fonctionne mieux avec array_values ​​() :

 $processedUsers = array_map(function($user) {
    return [
        'name' => strtoupper($user['name']),
        'email' => $user['email']
    ];
}, array_values(array_filter($users, function($user) {
    return $user['status'] === 'active';
})));

5. Résumé

La combinaison array_filter () et array_map () peut rendre très flexible pour traiter les tableaux complexes, réalisant d'abord la séparation logique de "filtre, puis converti". Cette méthode est très adaptée à une utilisation dans des scénarios tels que le traitement des données API de traitement, le prétraitement des données du formulaire et le flux de données commerciales.

N'oubliez pas non plus que si vous avez affaire à des tableaux associatifs ou si vous devez préserver les noms de clés, vous pouvez envisager d'utiliser array_keys () , array_values ​​() ou utiliser des bibliothèques fonctionnelles plus avancées telles que la classe de collecte de Laravel pour améliorer la lisibilité et les fonctionnalités.