您的位置:首页 > 编程语言 > PHP开发

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

2017-03-09 12:02 597 查看
主要是使用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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: