公众账号

二维码 微信扫描关注

当前位置:首页 > 码农学开发 > php教程 >

php二维数组排序如何解决 自定义函数数组排序

PHP一维数组的排序可以用sort(),asort(),arsort()等函数,但是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;
    }

关于 商务 项目 联系 友情链接网站地图 Copyright ©2018-2019 猪猪源码版权所有 备案号:豫ICP备18007351号-1(http://www.zzphp.cn)