对数组进行重新排序

很多时候,我们从数据库中取出我们要的数据后,并不是就完成了工作,更多的我们需要对数据进行遍历处理等,这时候我们从数据库中获取数据时的排序可能就被打乱了, 需要对数组重新排序,下面就写写汇总到的对一维和二维数组进行重新排序的方法:

一维数组:使用php自带的排序函数进行排序即可

sort() //以升序对数组排序
rsort() //以降序对数组排序
asort() //根据值,以升序对关联数组进行排序
ksort() //根据键,以升序对关联数组进行排序
arsort() //根据值,以降序对关联数组进行排序
krsort() //根据键,以降序对关联数组进行排序

对于二维数组,一维数组使用的排序函数就不太适用了,不能直接对二维数组中的值进行排序,所以需要用到下面的方法,用到的是php自带的array_multisort()函数:
首先看看php手册对这个函数的说明:

array_multisort ( $array1 [, mixed $array1_sort_order = SORT_ASC [, mixed $array1_sort_flags = SORT_REGULAR [, mixed $... ]]] )

参数说明:

array1
要排序的 array。

array1_sort_order
之前 array 参数要排列的顺序。 SORT_ASC 按照上升顺序排序, SORT_DESC 按照下降顺序排序。

此参数可以和 array1_sort_flags 互换,也可以完全删除,默认是 SORT_ASC 。

array1_sort_flags
为 array 参数设定选项:

排序类型标志:

SORT_REGULAR - 将项目按照通常方法比较(不修改类型)
SORT_NUMERIC - 按照数字大小比较
SORT_STRING - 按照字符串比较
SORT_LOCALE_STRING - 根据当前的本地化设置,按照字符串比较。 它会使用 locale 信息,可以通过 setlocale() 修改此信息。
SORT_NATURAL - 以字符串的”自然排序”,类似 natsort()
SORT_FLAG_CASE - 可以组合 (按位或 OR) SORT_STRING 或者 SORT_NATURAL 大小写不敏感的方式排序字符串。
参数可以和 array1_sort_order 交换或者省略,默认情况下是 SORT_REGULAR。


可选的选项,可提供更多数组,跟随在 sort order 和 sort flag 之后。 提供的数组和之前的数组要有相同数量的元素。 换言之,排序是按字典顺序排列的。

那么到我们这里,思路就是:1.先生成一个以排序字段的值为值的新数组,对新数组按照我们要求进行排序,然后将原有数组与新数组对应,按照通常序进行排序。代码如下:

/**
 * 对二维数组重新排序
 * @param $arrays  目标排序函数
 * @param $sort_key 排序字段
 * @param int $sort_order 排序顺序
 * @param int $sort_type  排序类型
 * @return bool
 */
function my_sort($arrays,$sort_key,$sort_order=SORT_ASC,$sort_type=SORT_REGULAR ){
    if(is_array($arrays)){
        foreach ($arrays as $array){ //对二维数组进行一次遍历
            if(is_array($array)){
                $key_arrays[] = $array[$sort_key]; //取排序字段的值组成一个新数组
            }else{
                return false;
            }
        }
    }else{
        return false;
    }
    array_multisort($key_arrays,$sort_order,$sort_type,$arrays);
    return $arrays;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值