前面介绍了php多维数组排序的一个函数array_multisort() ,想了解的人可以点击二维数组排序 array_multisort
下面介绍下不适用array_multisort()进行多维数组的排序。
这里介绍下2个php排序函数,一个是asort,一个是arsort.
asort(array,sorttype) 函数对数组进行排序并保持索引关系。主要用于对那些单元顺序很重要的结合数组进行排序。
可选的第二个参数包含了附加的排序标识。
如果成功则返回 TRUE,否则返回 FALSE。
arsort(array,sorttype) 函数对数组进行逆向排序并保持索引关系。主要用于对那些单元顺序很重要的结合数组进行排序。这个函数的用法和asort一样,只不过这个是对数组的索引进行逆向排序。
下面给出二维数组的排序算法:
<?php
<span style="white-space:pre"> </span>function array_sort($arr,$key,$type='asc'){ <span style="white-space:pre"> </span>$keyvalues = $new_array = array();<span style="white-space:pre"> </span>foreach ($arr as $k=>$v){<span style="white-space:pre"> </span>$keyvalues[$k] = $v[$key];<span style="white-space:pre"> </span>}<span style="white-space:pre"> </span>if($type == 'asc'){<span style="white-space:pre"> </span>asort($keyvalues);<span style="white-space:pre"> </span>}else{<span style="white-space:pre"> </span>arsort($keyvalues);<span style="white-space:pre"> </span>}<span style="white-space:pre"> </span>foreach ($keyvalues as $k=>$v){<span style="white-space:pre"> </span>$temparray[$k] = $arr[$k];<span style="white-space:pre"> </span>}<span style="white-space:pre"> </span>return $temparray; <span style="white-space:pre"> </span>}<span style="white-space:pre"> </span>$student = array(<span style="white-space:pre"> </span>array('name'=>'张三','age'=>'18','weight'=>100,'height'=>180),<span style="white-space:pre"> </span>array('name'=>'李四','age'=>'20','weight'=>200,'height'=>150),<span style="white-space:pre"> </span>array('name'=>'王五','age'=>'30','weight'=>150,'height'=>165),<span style="white-space:pre"> </span>array('name'=>'赵六','age'=>'50','weight'=>90,'height'=>173),<span style="white-space:pre"> </span>array('name'=>'孙七','age'=>'35','weight'=>160,'height'=>170)<span style="white-space:pre"> </span>);<span style="white-space:pre"> </span>$studentlist = array_sort($student,'weight');<span style="white-space:pre"> </span>var_dump($studentlist);?>