PHP实现MySQL groub by

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;
}

你可能感兴趣的:(PHP实现MySQL groub by)