Dans PHP, Array_Filter et Array_Reduce sont tous deux des fonctions puissantes pour le traitement des tableaux, mais leurs utilisations et leur fonctionnement sont considérablement différentes. Comprendre les différences et les scénarios d'utilisation entre ces deux fonctions aidera à écrire un code plus concis et efficace.
Array_Filter est utilisé pour filtrer les éléments du tableau. Il vérifie chaque élément via une fonction de rappel. L'élément avec la valeur de retour de True sera conservé et l'élément avec le return false sera supprimé. En termes simples, il s'agit de filtrer les éléments du tableau qui répondent aux exigences en fonction des conditions.
<?php
$arr = [1, 2, 3, 4, 5, 6];
// Filtrez tous les nombres uniformes
$result = array_filter($arr, function($value) {
return $value % 2 === 0;
});
print_r($result);
?>
Résultat de sortie:
Array ( [1] => 2 [3] => 4 [5] => 6 )
Remarque: Array_Filter ne modifie pas le nom de clé de l'élément.
Array_reduce est utilisé pour réduire un tableau en une seule valeur. Il fusionne les éléments du tableau en une valeur cumulative via une fonction de rappel, qui convient aux opérations telles que l'accumulation, le résumé et les chaînes d'épissage.
<?php
$arr = [1, 2, 3, 4, 5];
// Calculez la somme de tous les éléments du tableau
$sum = array_reduce($arr, function($carry, $item) {
return $carry + $item;
}, 0);
echo $sum;
?>
Résultat de sortie:
15
$ Carry est la valeur cumulative, le rappel continuera à le mettre à jour et le retour final est le résultat de réduction.
Caractéristiques | array_filter | array_reduce |
---|---|---|
effet | Filtrez le tableau et renvoyez un sous-ensemble qui répond aux critères | "Réduire" le tableau à une seule valeur |
Valeur de retour | Un tableau | Un scalaire ou un objet |
Utilisations principales | Éléments de filtrage conditionnel | Agrégation, fusion, accumulation |
Noms de clés réservés | réserve | Aucun nom de clé n'est impliqué, l'accumulation de valeurs est concernée |
Lorsque vous devez filtrer les éléments qui répondent aux critères du tableau , utilisez Array_Filter . Par exemple: filtrez tous les utilisateurs de plus de 18 ans.
Lorsque vous devez convertir un tableau en valeur , utilisez Array_reduce . Par exemple: calculer le score total, épisser les chaînes et générer des données statistiques.
Supposons qu'il existe un tableau de commande contenant plusieurs montants de commande.
<?php
$orders = [120, 250, 90, 300, 60];
// Le montant filtré est supérieur à100Ordres
$filteredOrders = array_filter($orders, function($amount) {
return $amount > 100;
});
// 计算筛选后Ordres总金额
$total = array_reduce($filteredOrders, function($carry, $amount) {
return $carry + $amount;
}, 0);
echo "Supérieur à100Ordres总金额是:" . $total;
?>
Grâce à l'exemple ci-dessus, on peut voir clairement que Array_Filter filtre d'abord les commandes qui remplissent les conditions, puis utilisent Array_reduce pour résumer. Lorsque les deux sont utilisés ensemble, les données du tableau peuvent être traitées de manière flexible.
Array_Filter se concentre sur le filtrage des éléments , conservant les éléments de la table qui répondent aux critères.
Array_reduce se concentre sur les fusions de réduction , "comprimer" le tableau dans un résultat.
Choisissez en fonction de vos besoins ou de votre utilisation en combinaison, ce qui peut rendre le code plus élégant et efficace.