php 二维数组排序/对数组分组

/**
 * 二维数组根据字段进行排序
 * @params array $array 需要排序的数组
 * @params string $field 排序的字段
 * @params string $sort 排序顺序标志 SORT_DESC 降序;SORT_ASC 升序
 */
 function arraySequence($array, $field, $sort = 'SORT_DESC')
{
    $arrSort = array();
    foreach ($array as $uniqid => $row) {
        foreach ($row as $key => $value) {
            $arrSort[$key][$uniqid] = $value;
        }
    }
    array_multisort($arrSort[$field], constant($sort), $array);
    return $array;
}

 

实现方法二,本人使用该方法

/**
 * 二维数组根据字段进行排序
 * @params array $array 需要排序的数组
 * @params string $field 排序的字段
 * @params string $sort 排序顺序标志 SORT_DESC 降序;SORT_ASC 升序
 */
 function arraySequence($array, $field, $sort = 'SORT_DESC')
{
  $sort = array(
        'direction' => $sort, //排序顺序标志 SORT_DESC 降序;SORT_ASC 升序
        'field'     => $field,       //排序字段
);
$arrSort = array();
foreach($array AS $uniqid => $row){
    foreach($row AS $key=>$value){
        $arrSort[$key][$uniqid] = $value;
    }
}
if($sort['direction']){
    array_multisort($arrSort[$sort['field']], constant($sort['direction']), $array);
}
    return $array;
}

 

 

/*
数据按键值分组
$arr  传入数组
$key  需分组的键值
调用方法  array_group_by($html, $key='one');
*/
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;
    }

 

posted @ 2017-10-23 16:58  爱侬多  阅读(738)  评论(0编辑  收藏  举报