使用 php 的 array_group_by() 函數(shù)可以對數(shù)組中的數(shù)據進行分組,從而方便進行統(tǒng)計分析,包括:分組后,可以通過 array_map() 函數(shù)計算每個組中的元素數(shù)量。還可以通過自定義回調函數(shù)找出每個組中具有最大值的元素。通過分組,可以進行實戰(zhàn)案例應用,例如計算商品訂單數(shù)據中每個產品組的總銷售額。
PHP 數(shù)組分組函數(shù)在統(tǒng)計分析中的應用
在進行統(tǒng)計分析時,經常需要對數(shù)組中的數(shù)據進行分組和統(tǒng)計。PHP 提供了強大的數(shù)組分組函數(shù) array_group_by()
,可以輕松地根據指定鍵對數(shù)組進行分組。
array_group_by() 用法
array_group_by()
函數(shù)接受兩個參數(shù):
數(shù)組: 要進行分組的數(shù)組。
鍵選擇器: 一個閉包或字符串函數(shù),用于返回每個數(shù)組元素要分組的鍵。
函數(shù)返回一個分組后的數(shù)組,鍵是按鍵選擇器計算的鍵,值是被分組的數(shù)組元素。
示例:
分組以下學生數(shù)組按性別:
$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'], ], ]
登錄后復制
統(tǒng)計分析應用
使用 array_group_by()
進行分組后,可以使用其他函數(shù)對分組后的數(shù)組進行統(tǒng)計分析。例如:
頻率計數(shù): 計算每個組中元素的數(shù)量:
$genderCounts = array_map('count', $genderGrouped);
登錄后復制
最大值: 查找每個組中具有最大值的元素:
$maxAgeByGender = array_map(function($group) { return max($group, function($a, $b) { return $a['age'] - $b['age']; }); }, $ageGrouped);
登錄后復制
實戰(zhàn)案例
以下是一個實戰(zhàn)案例,演示如何使用 array_group_by()
對商品訂單數(shù)據進行分組并計算每個產品組的總銷售額:
$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 ]
登錄后復制