Dans PHP, Array_Column et Array_Reduce sont deux fonctions de traitement de la table très utiles. Grâce à la combinaison de ces deux fonctions, des statistiques de données complexes et un traitement peuvent être effectuées efficacement. Cet article explorera en profondeur comment combiner ces deux fonctions pour compléter les opérations de tableau plus efficaces et le traitement des données.
La fonction Array_Column est utilisée pour extraire la colonne spécifiée à partir d'un tableau multidimensionnel et renvoie un tableau contenant les éléments de la colonne. Son utilisation commune est d'extraire la valeur d'un champ à partir d'un grand tableau contenant plusieurs tableaux associatifs.
Prototype de fonction:
array_column(array $array, mixed $column_key, mixed $index_key = null): array
Array : le tableau multidimensionnel d'entrée.
Column_Key : Spécifie le nom de la colonne à extraire (peut être le nom de clé du tableau ou l'index entier).
index_key (facultatif): spécifie la touche d'index qui renvoie le tableau de résultat. S'il est omis, le tableau retourné utilisera les clés du tableau d'origine.
La fonction Array_reduce est une fonction de tableau d'ordre supérieur dans PHP qui accumule les éléments dans un tableau d'une manière ou d'une autre. Il est généralement utilisé pour agréger les valeurs dans un tableau en une seule valeur.
Prototype de fonction:
array_reduce(array $array, callable $callback, mixed $initial = null): mixed
Tableau : le tableau d'entrée.
Rappel : une fonction de rappel qui effectuera une sorte d'opération sur chaque élément du tableau.
Initial (facultatif): la valeur initiale accumulée, null par défaut.
La signature de la fonction de rappel est généralement comme ceci:
function($carry, $item) {
// Logique opérationnelle
return $carry;
}
où $ transport est la valeur accumulée et l'article $ est l'élément de tableau actuellement traité.
Ces deux fonctions sont souvent utilisées en combinaison, en particulier lorsque des statistiques complexes ou des opérations de résumé sont nécessaires pour les tableaux multidimensionnels. Par exemple, supposons que nous ayons un tableau contenant des enregistrements de vente, où chaque élément est un enregistrement de vente (y compris des informations telles que la date, l'article, le montant des ventes, etc.). Nous pouvons extraire le montant des ventes via Array_Column , puis additionner ces montants via array_reduce .
Exemples de données:
$sales = [
['date' => '2025-04-01', 'product' => 'Phone', 'amount' => 200],
['date' => '2025-04-02', 'product' => 'Laptop', 'amount' => 1500],
['date' => '2025-04-03', 'product' => 'Tablet', 'amount' => 600],
['date' => '2025-04-01', 'product' => 'Phone', 'amount' => 250],
['date' => '2025-04-02', 'product' => 'Laptop', 'amount' => 1700],
// Plus de données...
];
Tout d'abord, nous pouvons utiliser Array_Column pour extraire tous les montants de vente:
$amounts = array_column($sales, 'amount');
Ensuite, utilisez Array_reduce pour résumer le montant des ventes:
$totalSales = array_reduce($amounts, function($carry, $item) {
return $carry + $item;
}, 0);
echo "Total Sales: " . $totalSales;
Dans cet exemple, Array_Column extrait toutes les colonnes du montant des ventes, Array_reduce accumule ces montants et calcule enfin les ventes totales.
Si nous avons besoin de statistiques plus complexes, telles que le comptage des ventes totales de chaque date par date, la combinaison de Array_Column et Array_reduce aura plus d'avantages. Tout d'abord, nous pouvons utiliser Array_Column pour extraire les colonnes de date et de montant des ventes, puis agréger les ventes totales par date via array_reduce .
Exemple de ventes par date:
// Extraire les colonnes de date et de montant
$dates = array_column($sales, 'date');
$amounts = array_column($sales, 'amount');
// Date de fusion et montant
$salesData = array_map(function($date, $amount) {
return ['date' => $date, 'amount' => $amount];
}, $dates, $amounts);
// Ventes par date
$dailySales = array_reduce($salesData, function($carry, $item) {
$carry[$item['date']] = isset($carry[$item['date']]) ? $carry[$item['date']] + $item['amount'] : $item['amount'];
return $carry;
}, []);
echo "Daily Sales:\n";
print_r($dailySales);
Ce code produit des ventes agrégées par date. Par exemple:
Daily Sales:
Array
(
[2025-04-01] => 450
[2025-04-02] => 3200
[2025-04-03] => 600
)
Si le tableau contient des données d'URL lors du traitement d'un tableau, nous pouvons utiliser Array_Column pour extraire l'URL et les remplacer selon les besoins. Voici un exemple de la façon de remplacer le nom de domaine dans l'URL par m66.net .
Supposons que nous ayons les données suivantes:
$urls = [
['id' => 1, 'url' => 'https://example.com/page1'],
['id' => 2, 'url' => 'https://anotherexample.com/page2'],
['id' => 3, 'url' => 'https://example.com/page3'],
];
Nous pouvons utiliser Array_Column pour extraire l'URL et remplacer le nom de domaine: