二维数组排序
Posted Chrdai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二维数组排序相关的知识,希望对你有一定的参考价值。
一、二维数组排序
1、方法1:
/** * @Purpose : 二维数组排序 * @Method Name : array_sort() * @Parameters : array $array 要排序的二维数组 * string $row 排序依据列 * string $type 排序类型[asc or desc] * @Return array : $array_temp 排好序的数组 */ function array_sort($array,$row,$type){ $array_temp = array(); foreach($array as $v){ $array_temp[$v[$row]] = $v; // 以需要排序的字段名为 key } if($type == \'asc\'){ ksort($array_temp); }elseif($type=\'desc\'){ krsort($array_temp); }else{ } return $array_temp; }
注意:当需要排序的字段有重复的时候,这种办法就不适用啦,因为 key 值必须唯一。例如将
$arr_test = [
0 => [\'name\'=>\'name1\',\'age\'=>23],
1 => [\'name\'=>\'name2\',\'age\'=>25],
2 => [\'name\'=>\'name2\',\'age\'=>23],
3 => [\'name\'=>\'name3\',\'age\'=>24]
];
以 age 进行排序则不适用,排序后只会返回 3 个元素,因为有 2 个元素的 age 值是一样的。
2、方法2:(推荐)
可以使用下面的方法来排序:
/** *Purpose : 二维数组排序 *@parameters : array $arr 未处理的结果集 * string $row 需要排序的行 *@return : array $arr 排序后的结果 */ function array_sort($arr,$row){ $arr_tmp = array(); // age 所组成的数组 foreach ($arr as $key => $value) { $arr_tmp[] = $value[$row]; } //将 $arr_tmp 按 age 从小到大排序 array_multisort($arr_tmp, SORT_ASC, $arr); // 将 $arr 按 $arr_tmp 的值 ASC 排序
return $arr; }
array_multisort($arr1 , SORT_ASC, $arr2 , $arr3 ...) 其实就是将$arr1 排序后,后面的数组都按照 $arr1 的顺序就行排序。
二、三维数组排序。
例如,需要对下面这个数组按照 sort字段升序进行排序。
//待排序的数组 $res = [ 13234567890 => [ 0 => [ \'id\' => 1, \'phone\' => 13234567890, \'answer\' => \'张三\', \'sort\' => 1, ]; 1 => [ \'id\' => 2, \'phone\' => 13234567890, \'answer\' => \'男\', \'sort\' => 3, ]; 2 => [ \'id\' => 3, \'phone\' => 13234567890, \'answer\' => \'25\', \'sort\' => 2, ]; ], ]; //排序方法如下。 foreach ($res as $key => $val) { $tmpArr = []; foreach ($val as $k => $v) { $tmpArr[] = $v[\'sort\']; } array_multisort($tmpArr, SORT_ASC, $val); $resData[$key] = $val; }
array_multisort()的用法可参看 :http://php.net/manual/zh/function.array-multisort.php
本文为作者原创,如需要转载,请注明出处 :http://www.cnblogs.com/chrdai/p/7081704.html
以上是关于二维数组排序的主要内容,如果未能解决你的问题,请参考以下文章
C 语言二级指针作为输入 ( 二维数组 | 二维数组遍历 | 二维数组排序 )
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否函数该整数。 ```java publi(代码