很多时候,我们从数据库中取出我们要的数据后,并不是就完成了工作,更多的我们需要对数据进行遍历处理等,这时候我们从数据库中获取数据时的排序可能就被打乱了, 需要对数组重新排序,下面就写写汇总到的对一维和二维数组进行重新排序的方法:
一维数组:使用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_sort_flags 互换,也可以完全删除,默认是 SORT_ASC 。
排序类型标志:
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。
那么到我们这里,思路就是: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; }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/49206.html