Position actuelle: Accueil> Derniers articles> array_filter et array_map conseils

array_filter et array_map conseils

gitbox 2025-05-28

Dans PHP, Array_Filter et Array_Map sont deux fonctions de traitement de la table très couramment utilisées et puissantes. Ils ont leurs propres utilisations lorsqu'ils sont utilisés seuls, mais lorsque nous les combinons, nous pouvons considérablement améliorer la simplicité et l'efficacité du code. Cet article présentera l'utilisation de ces deux fonctions en détail et partagera des conseils pratiques et des meilleures pratiques pour leur combinaison.


1. Comprendre Array_Filter et Array_Map

  • array_filter
    Cette fonction est utilisée pour filtrer les éléments du tableau. Une fonction de rappel détermine si chaque élément répond à la condition et renvoie un nouveau tableau composé de tous les éléments qui répondent à la condition.

     $filtered = array_filter($array, function($item) {
        return $item > 10; // Le filtre est supérieur à10Éléments
    });
    
  • array_map
    Cette fonction est utilisée pour effectuer la même opération de rappel sur chaque élément du tableau, renvoyant le nouveau tableau traité.

     $mapped = array_map(function($item) {
        return $item * 2; // Multiplier chaque élément par2
    }, $array);
    

2. Pourquoi l'utiliser en combinaison?

  • Après filtrage, MAP : utilisez d'abord Array_Filter pour filtrer les éléments qui remplissent les conditions, puis utilisez Array_Map pour traiter ces éléments uniformément.

  • Après mappage, filtrez : utilisez d'abord Array_map pour convertir le format de l'élément de tableau, puis utilisez Array_Filter pour filtrer les résultats qui répondent aux exigences.

  • Fonctionnement unique de la chaîne : utilisez en combinaison pour écrire du code de chaîne concis et intuitif, en évitant d'écrire de longues boucles.


3. Conseils et exemples pratiques

Conseils 1: Filtrez d'abord, puis carte pour vous assurer que la fonction de mappage ne traite que les éléments qui remplissent les conditions

 <?php
$numbers = [1, 5, 12, 18, 7, 25];

// Filtrez le plus que10Nombres
$filtered = array_filter($numbers, function($num) {
    return $num > 10;
});

// 再对过滤后Nombres做平方操作
$squared = array_map(function($num) {
    return $num * $num;
}, $filtered);

print_r($squared);
?>

Sortir:

 Array
(
    [2] => 144
    [3] => 324
    [5] => 625
)

Dans cet exemple, utilisez d'abord Array_Filter pour supprimer des éléments qui ne remplissent pas les conditions pour éviter que Array_Map ne fasse un travail inutile.


Conseils 2: appels de chaîne, écrivez un code plus concis

PHP 7.4+ prend en charge les fonctions de flèche et est plus concise en combinaison avec les appels de chaîne:

 <?php
$numbers = [1, 5, 12, 18, 7, 25];

$result = array_map(
    fn($num) => $num * $num,
    array_filter($numbers, fn($num) => $num > 10)
);

print_r($result);
?>

Conseils 3: Filtrez après mappage, convertissez d'abord le format de données, puis filtrez les éléments qui correspondent au format

 <?php
$urls = [
    'http://example.com',
    'ftp://fileserver.com',
    'https://secure.com',
];

// Convertir d&#39;abord en protocole minuscule
$lowercased = array_map(fn($url) => strtolower($url), $urls);

// Filtrer à nouveauhttpLe début de l&#39;accordURL
$httpUrls = array_filter($lowercased, fn($url) => str_starts_with($url, 'http'));

print_r($httpUrls);
?>

Conseils 4: Filtre avec des noms de clés

Le deuxième paramètre de Array_Filter Array_Filter_Use_Key peut être utilisé pour filtrer en fonction du nom de la clé, puis traiter la valeur en combinaison avec array_map :

 <?php
$data = [
    'name' => 'Alice',
    'age' => 25,
    'email' => '[email protected]',
    'score' => 92,
];

// Le filtre ne conserve que le nom de la clé en tant que chaîne et la longueur est supérieure à3Éléments
$filtered = array_filter($data, fn($key) => strlen($key) > 3, ARRAY_FILTER_USE_KEY);

// Convertir les valeurs au format de chaîne
$mapped = array_map(fn($value) => (string)$value, $filtered);

print_r($mapped);
?>

4. Résumé

  • Filtrez d'abord, puis carte pour réduire le traitement inutile.

  • Carte d'abord, puis filtrez, et le format ou la structure des données peut être unifié d'abord pour un filtrage facile.

  • Utilisez les fonctions Arrow et les appels de chaîne pour écrire du code de nettoyage.

  • Combiné avec array_filter_use_key pour filtrer les noms de clés.

  • Les utilisations de combinaison rendent la logique de code plus claire, évitent les boucles complexes et améliorent la réutilisabilité et la lisibilité du code.

La maîtrise de la combinaison et de l'utilisation des compétences de ces deux fonctions peut vous rendre plus pratique dans la gestion des tableaux dans le développement quotidien de PHP et écrire un code efficace et élégant.


 <?php
// Exemples complets:Filtrez les valeurs vides,Convertir la chaîne en majuscules,Résultat de retour
$data = ['apple', '', 'Banana', null, 'Cherry'];

$result = array_map(
    fn($item) => strtoupper($item),
    array_filter($data, fn($item) => !empty($item))
);

print_r($result);
?>