Position actuelle: Accueil> Derniers articles> La différence entre Array_Filter et Array_reduce et la sélection de scène

La différence entre Array_Filter et Array_reduce et la sélection de scène

gitbox 2025-05-29

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.


1. Le rôle de Array_Filter

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.

Exemple de code

 <?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.


2. Le rôle de Array_reduce

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.

Exemple de code

 <?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.


3. La différence essentielle entre les deux

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

4. Comment choisir d'utiliser selon la scène?

  • 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.


5. Combiné avec des exemples

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.


résumé

  • 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.