MySQL的groub by是根据某个列实现归类,现在用PHP实现,有两种方式。如下
第1种 复杂版
/**
* 二维数组根据指定值分组
* @param $arr 需要进行分组的二维数组
* @param $keys 指定的键值
* @return array
*/
function array_group_by($arr, $key){
$grouped = [];
foreach ($arr as $value){
$grouped[$value[$key]][] = $value;
}
if (func_num_args() > 2){
$args = func_get_args();
foreach ($grouped as $key => $value) {
$parms = array_merge([$value], array_slice($args, 2, func_num_args()));
$grouped[$key] = call_user_func_array('array_group_by', $parms);
}
}
return $grouped;
}
第2种 精简版
/**
* 二维数组根据指定值分组
* @param $list 需要进行分组的二维数组
* @param $keyName 指定的键值
* @return array
*/
function array_group_by($list, $keyName){
$array = [];
foreach ($list as $key => $value){
$array[$value[$keyName]][] = $value;
}
return $array;
}