二维数组的排序
来源:互联网 发布:怎么做一名淘宝客 编辑:程序博客网 时间:2024/05/08 02:36
在php中我们有个专门的多维数组排序函数:
另一方法:
array_multisort(array1,sorting order, sorting type,array2,array3..)//是对多个数组或多维数组进行排序的函数array1必需。规定输入的数组。sorting order可选。规定排列顺序。可能的值是 SORT_ASC 和 SORT_DESC。sorting type可选。规定排序类型。可能的值是SORT_REGULAR、SORT_NUMERIC和SORT_STRING。array2可选。规定输入的数组。array3可选。规定输入的数组。
第一个参数必须是一个数组。接下来的每个参数可以是数组或者是下面列出的排序标志。
排序顺序标志:
■SORT_ASC - 按照上升顺序排序(a-z)
■SORT_DESC - 按照下降顺序排序(z-a)
排序类型标志:
■SORT_REGULAR - 将项目按照通常方法比较
■SORT_NUMERIC - 将项目按照数值比较
■SORT_STRING - 将项目按照字符串比较
每个数组之后不能指定两个同类的排序标志。每个数组后指定的排序标志仅对该数组有效 - 在此之前为默认值 SORT_ASC 和 SORT_REGULAR。
<?phpfunction my_sort($arrays,$sort_key,$sort_order=SORT_ASC,$sort_type=SORT_NUMERIC ){ 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; }$person = array(array('id'=>1,'name'=>'fj','weight'=>100,'height'=>180),array('id'=>2,'name'=>'tom','weight'=>53,'height'=>150),array('id'=>3,'name'=>'jerry','weight'=>120,'height'=>156),array('id'=>4,'name'=>'bill','weight'=>110,'height'=>190),array('id'=>5,'name'=>'linken','weight'=>80,'height'=>200),array('id'=>6,'name'=>'madana','weight'=>95,'height'=>110),array('id'=>7,'name'=>'jordan','weight'=>70,'height'=>170));var_dump($person);$person = my_sort($person,'name',SORT_ASC,SORT_STRING);var_dump($person);$person = my_sort($person,'weight');var_dump($person);?>
也可以这样简单的使用:
$users = array( array('name' => 'tom', 'age' => 20) , array('name' => 'anny', 'age' => 18) , array('name' => 'jack', 'age' => 22)); 希望能按照age从小到大进行排序。笔者整理了两个方法出来,分享给大家。 1、使用array_multisort 使用这个方法,会比较麻烦些,要将age提取出来存储到一维数组里,然后按照age升序排列。具体代码如下: 代码如下:$ages = array();foreach ($users as $user) { $ages[] = $user['age'];} array_multisort($ages, SORT_ASC, $users); 执行后,$users就是排序好的数组了,可以打印出来看看。如果需要先按年龄升序排列,再按照名称升序排列,方法同上,就是多提取一个名称数组出来,最后的排序方法这样调用: 代码如下:array_multisort($ages, SORT_ASC, $names, SORT_ASC, $users); 2、使用usort 使用这个方法最大的好处就是可以自定义一些比较复杂的排序方法。例如按照名称的长度降序排列: 代码如下:usort($users, function($a, $b) { $al = strlen($a['name']); $bl = strlen($b['name']); if ($al == $bl) return 0; return ($al > $bl) ? -1 : 1; }); 这里使用了匿名函数,如果有需要也可以单独提取出来。其中$a, $b可以理解为$users数组下的元素,可以直接索引name值,并计算长度,而后比较长度就可以了。
另一方法:
function arr_sort($arr,$key ,$order="DESC"){ if(count($arr)<=1) { return false; } $array = $tmp = array(); foreach($arr as $k=>$v) { $array[$k] = $v[$key]; } if($order == 'DESC') { arsort($array); } else { asort($array); } foreach($array as $k1=>$v1) { $tmp[$k1] = $arr[$k1]; } return $tmp;}$users = array( array('name' => 'tom', 'age' => 20), array('name' => 'anny', 'age' => 18), array('name' => 'jack', 'age' => 22)); echo '<pre>';var_dump(arr_sort($users,'age','asc'));
0 0
- 二维数组的排序
- 二维数组的排序
- 二维数组的排序
- 二维数组的排序
- 二维数组的排序
- 二维数组的排序
- 二维数组的排序
- 二维数组的列排序
- 一个二维数组的排序
- 一个二维数组的排序
- js 二维数组的排序
- 二维数组的列排序
- 二维数组的列排序
- 二维数组的列排序
- 二维数组的列排序
- 二维数组的选择排序
- 二维数组的冒泡排序
- 二维数组的列排序
- Linux压缩解压打包命令
- 文件编码转换
- objective c代码规范
- ViewPager初用遇到问题
- 用Java判断一个URL是否有效的两种方法
- 二维数组的排序
- UE4 Packaging Projects
- UML箭头含义
- 2015暑期结束小思
- qml学习---------------Button属性
- 兼容不同大小浏览器的css写法
- 编写高质量的Objective-C代码
- mahout 0.9与 hadoop2.x 冲突 解决办法
- 查找所有匹配结果(正则表达式)