Position actuelle: Accueil> Derniers articles> array_filter () avec array_reduce () pour l'agrégation de données

array_filter () avec array_reduce () pour l'agrégation de données

M66 2025-06-04

Dans PHP, les fonctions Array_Filter () et Array_Reduce () sont des outils très utiles, qui sont utilisés pour filtrer et agréger les tableaux respectivement. Ils peuvent aider les développeurs à simplifier le code, à améliorer la lisibilité et l'efficacité du code. Cet article utilisera des exemples pour montrer comment utiliser ces deux fonctions pour le filtrage et l'agrégation de données.

1. Introduction à la fonction array_filter ()

La fonction Array_Filter () est utilisée pour filtrer les éléments dans un tableau. Il reçoit un tableau et une fonction de rappel comme paramètres. La fonction de rappel juge chaque élément du tableau. Si la fonction de rappel renvoie true , l'élément reste dans le tableau de résultat; Si false est retourné, l'élément est filtré.

grammaire:

 array_filter(array $array, callable $callback = null, int $mode = 0): array
  • $ Array : un tableau qui doit être filtré.

  • $ rappel : la fonction de rappel. Si la fonction renvoie true , l'élément sera conservé; Si false est retourné, l'élément sera supprimé. Si la fonction de rappel n'est pas transmise, toutes les fausses valeurs du tableau (par exemple null , false , 0 , '' , etc.) sont supprimées.

  • Mode $ : facultatif, spécifiant la méthode d'index pour renvoyer le tableau. La valeur par défaut est 0 , c'est-à-dire que l'index d'origine est conservé.

Exemple:

Supposons que nous ayons un tableau de nombres que nous voulons filtrer tous les nombres supérieurs à 10.

 <?php
$array = [1, 5, 8, 12, 15, 2];

$result = array_filter($array, function($value) {
    return $value > 10;
});

print_r($result);
?>

Sortir:

 Array
(
    [3] => 12
    [4] => 15
)

Dans le code ci-dessus, nous utilisons la fonction array_filter () pour filtrer les nombres supérieurs à 10. Comme vous pouvez le voir, le tableau retourné ne contient que des éléments qui répondent aux critères.

2. Introduction à la fonction array_reduce ()

La fonction Array_reduce () est utilisée pour simplifier un tableau en une seule valeur. Il fonctionne sur chaque élément du tableau via une fonction de rappel et regroupe les résultats en une seule valeur de retour. Les scénarios d'application courants incluent la sommation, le calcul des valeurs moyennes, les chaînes d'épissage, etc.

grammaire:

 array_reduce(array $array, callable $callback, $initial = null): mixed
  • $ Array : un tableau qui doit être agrégé.

  • $ rappel : la fonction de rappel, qui reçoit deux paramètres: la valeur accumulée et la valeur de l'élément de tableau actuel. La valeur de retour de la fonction de rappel sera utilisée comme valeur accumulée pour la prochaine itération.

  • $ Initial : Facultatif, valeur initiale, par défaut est nul .

Exemple:

Nous avons un tableau contenant des nombres et voulons calculer la somme de tous les éléments du tableau.

 <?php
$array = [1, 5, 8, 12, 15, 2];

$sum = array_reduce($array, function($carry, $value) {
    return $carry + $value;
}, 0);

echo $sum;
?>

Sortir:

 43

Dans le code ci-dessus, la fonction array_reduce () ajoute chaque élément dans le tableau en séquence et renvoie enfin la somme du tableau. Ici $ transport représente la valeur accumulée, tandis que la valeur $ représente la valeur de l'élément de tableau actuel.

3. Application complète: filtrage des données et agrégation

Nous pouvons utiliser array_filter () et array_reduce () pour filtrer les données de la table et les agréger. Supposons que nous ayons un éventail de prix multiples de produits, que nous voulions filtrer les produits avec des prix supérieurs à 10 et calculer leur somme.

 <?php
$products = [
    ['name' => 'Product 1', 'price' => 5],
    ['name' => 'Product 2', 'price' => 15],
    ['name' => 'Product 3', 'price' => 8],
    ['name' => 'Product 4', 'price' => 20],
];

// utiliser array_filter Filtrer le prix est supérieur à10Produits
$filteredProducts = array_filter($products, function($product) {
    return $product['price'] > 10;
});

// utiliser array_reduce Calculez le prix total du produit après le filtrage
$totalPrice = array_reduce($filteredProducts, function($carry, $product) {
    return $carry + $product['price'];
}, 0);

echo "Total Price: " . $totalPrice;
?>

Sortir:

 Total Price: 35

Dans cet exemple, nous utilisons d'abord Array_Filter () pour filtrer les produits avec des prix supérieurs à 10, puis utiliser Array_reduce () pour calculer la somme de ces prix des produits filtrés.

4. Remplacer l'exemple de nom de domaine URL

Supposons que nous ayons un tableau contenant des URL et que nous devons remplacer le nom de domaine dedans par m66.net , nous pouvons le faire en utilisant array_map () et des expressions régulières.

 <?php
$urls = [
    'http://example.com/page1',
    'https://www.example.com/page2',
    'http://example.com/page3'
];

$updatedUrls = array_map(function($url) {
    return preg_replace('/https?:\/\/[^\/]+/', 'https://m66.net', $url);
}, $urls);

print_r($updatedUrls);
?>

Sortir: