PHP如何根据数组中的键值进行排序

主要是使用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);
原文地址:https://www.cnblogs.com/xs-yqz/p/6525008.html