使用 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 ]
登錄后復制