对数组进行重新排序
2017-08-15 01:26
239 查看
很多时候,我们从数据库中取出我们要的数据后,并不是就完成了工作,更多的我们需要对数据进行遍历处理等,这时候我们从数据库中获取数据时的排序可能就被打乱了, 需要对数组重新排序,下面就写写汇总到的对一维和二维数组进行重新排序的方法:
一维数组:使用php自带的排序函数进行排序即可
对于二维数组,一维数组使用的排序函数就不太适用了,不能直接对二维数组中的值进行排序,所以需要用到下面的方法,用到的是php自带的
首先看看php手册对这个函数的说明:
参数说明:
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.先生成一个以排序字段的值为值的新数组,对新数组按照我们要求进行排序,然后将原有数组与新数组对应,按照通常序进行排序。代码如下:
一维数组:使用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; }
相关文章推荐
- 前端对后台传过来是数组进行重新排序显示
- 百度笔试题:一个已经排序好的很大的数组,现在给它划分成m段,每段长度不定,段长最长为k,然后段内打乱顺序,请设计一个算法对其进行重新排序
- 在控制台中输入一个数组,并对这个数组进行重新排序,将第一个数和最后一个交换,将第二个和倒数第二个交换
- 以行为单位对字符串变量下标为奇数位置上的字符按其ASCii值从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中
- 对数组进行排序并重新显示出来
- n个实数(仅包含正实数和负实数)组成的数组A进行重新排序, //使得其中的所有的负实数都要在正实数之前
- Java对数组对象进行排序
- 对数组里的字典进行数字字母排序
- 键值对数组如何按照"键"进行排序?
- 使用JS对数组进行排序,设置计时器和计数器
- 用指针数组对字符串进行排序
- 把一个二维实型数组a按照第0列的元素进行排序(由小到大排序,用气泡法)
- java字符串数组进行大小排序的简单实现
- asp下实现 重新排序数字数组的代码
- 在旋转后的排序数组中进行查找
- 利用数组名作为函数参数传递排序和用指针进行排序
- 如何对数组中的字典进行排序
- 小康陪你学JAVA--------sort方法对数组进行排序
- iOS如何对包含date的数组进行排序
- Mysql对自增主键ID进行重新排序