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.
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);
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.
<?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.
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);
?>
<?php
$urls = [
'http://example.com',
'ftp://fileserver.com',
'https://secure.com',
];
// Convertir d'abord en protocole minuscule
$lowercased = array_map(fn($url) => strtolower($url), $urls);
// Filtrer à nouveauhttpLe début de l'accordURL
$httpUrls = array_filter($lowercased, fn($url) => str_starts_with($url, 'http'));
print_r($httpUrls);
?>
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);
?>
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);
?>