使用 php 的 array_group_by() 函數可以對數組中的數據進行分組,從而方便進行統計分析,包括:分組后,可以通過 array_map() 函數計算每個組中的元素數量。還可以通過自定義回調函數找出每個組中具有最大值的元素。通過分組,可以進行實戰案例應用,例如計算商品訂單數據中每個產品組的總銷售額。
PHP 數組分組函數在統計分析中的應用
在進行統計分析時,經常需要對數組中的數據進行分組和統計。PHP 提供了強大的數組分組函數 array_group_by(),可以輕松地根據指定鍵對數組進行分組。
array_group_by() 用法
array_group_by() 函數接受兩個參數:
數組: 要進行分組的數組。
鍵選擇器: 一個閉包或字符串函數,用于返回每個數組元素要分組的鍵。
函數返回一個分組后的數組,鍵是按鍵選擇器計算的鍵,值是被分組的數組元素。
示例:
分組以下學生數組按性別:
$students = [
['id' => 1, 'name' => 'Alice', 'gender' => 'F'],
['id' => 2, 'name' => 'Bob', 'gender' => 'M'],
['id' => 3, 'name' => 'Carol', 'gender' => 'F'],
];
$genderGrouped = array_group_by($students, 'gender');
登錄后復制
結果:
[
'F' => [
['id' => 1, 'name' => 'Alice', 'gender' => 'F'],
['id' => 3, 'name' => 'Carol', 'gender' => 'F'],
],
'M' => [
['id' => 2, 'name' => 'Bob', 'gender' => 'M'],
],
]
登錄后復制
統計分析應用
使用 array_group_by() 進行分組后,可以使用其他函數對分組后的數組進行統計分析。例如:
頻率計數: 計算每個組中元素的數量:
$genderCounts = array_map('count', $genderGrouped);
登錄后復制
最大值: 查找每個組中具有最大值的元素:
$maxAgeByGender = array_map(function($group) {
return max($group, function($a, $b) {
return $a['age'] - $b['age'];
});
}, $ageGrouped);
登錄后復制
實戰案例
以下是一個實戰案例,演示如何使用 array_group_by() 對商品訂單數據進行分組并計算每個產品組的總銷售額:
$orders = [
['product_id' => 1, 'quantity' => 2, 'price' => 10],
['product_id' => 2, 'quantity' => 1, 'price' => 15],
['product_id' => 1, 'quantity' => 3, 'price' => 10],
];
// 按產品 ID 分組
$groupedByProduct = array_group_by($orders, 'product_id');
// 計算每個組的總銷售額
$productSales = array_map(function($group) {
return array_reduce($group, function($carry, $item) {
return $carry + ($item['quantity'] * $item['price']);
}, 0);
}, $groupedByProduct);
登錄后復制
結果:
[
1 => 50, // 總銷售額為 $50 的產品 1
2 => 15, // 總銷售額為 $15 的產品 2
]
登錄后復制






