主要是使用PHP的排序函数,asort()和arsort()。
为了减少代码的耦合性,我们将根据数组中的键值进行排序封装成一个函数
1 <?php 2 $array = array( 3 array(\'name\'=>\'aa\',\'price\'=>1050), 4 array(\'name\'=>\'bb\',\'price\'=>4300), 5 array(\'name\'=>\'cc\',\'price\'=>3100), 6 array(\'name\'=>\'dd\',\'price\'=>4900), 7 array(\'name\'=>\'ee\',\'price\'=>960), 8 array(\'name\'=>\'ff\',\'price\'=>6299), 9 array(\'name\'=>\'gg\',\'price\'=>1200) 10 ); 11 function arr_sort($array,$key,$order="asc"){ //asc是升序 desc是降序 12 $arr_nums=$arr=array(); 13 foreach($array as $k=>$v){ 14 $arr_nums[$k]=$v[$key]; 15 } 16 if($order==\'asc\'){ 17 asort($arr_nums); 18 }else{ 19 arsort($arr_nums); 20 } 21 foreach($arr_nums as $k=>$v){ 22 $arr[$k]=$array[$k]; 23 } 24 print_r($arr); 25 } 26 arr_sort($array,\'price\');
在PHP中,内置一个排序的函数 array_multisort(),可以参考上一篇的数组排序
1 <?php 2 $array = array( 3 array(\'name\'=>\'aa\',\'price\'=>1050), 4 array(\'name\'=>\'bb\',\'price\'=>4300), 5 array(\'name\'=>\'cc\',\'price\'=>3100), 6 array(\'name\'=>\'dd\',\'price\'=>4900), 7 array(\'name\'=>\'ee\',\'price\'=>960), 8 array(\'name\'=>\'ff\',\'price\'=>6299), 9 array(\'name\'=>\'gg\',\'price\'=>1200) 10 ); 11 //方法一 12 function arr_sort($array,$key,$order="desc"){ //asc是升序 desc是降序 13 $arr_nums=$arr=array(); 14 foreach($array as $k=>$v){ 15 $arr_nums[$k]=$v[$key]; 16 } 17 if($order==\'asc\'){ 18 asort($arr_nums); 19 }else{ 20 arsort($arr_nums); 21 } 22 foreach($arr_nums as $k=>$v){ 23 $arr[$k]=$array[$k]; 24 } 25 print_r($arr); 26 } 27 arr_sort($array,\'price\'); 28 29 30 //方法二 31 32 foreach ( $array as $key => $row ){ 33 $name[$key] = $row [\'name\']; 34 $price[$key] = $row [\'price\']; 35 } 36 array_multisort($price, SORT_ASC, $name, SORT_DESC, $array); 37 print_r($array);
请发表评论