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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值