您的位置:首页 > 其它

对数组进行重新排序

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

一维数组:使用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
9c3c
,$sort_type,$arrays);
return $arrays;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐