• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

PHP 数组按多个字段排序

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

最接近碰到一个问题 一个二维数组,需要按照库存量排序,然后再按照门店距离排序。

发现了这样一个这样子的方法:

 1 $array1 = array(
 2       0=>array(\'id\'=>8,\'name\'=>\'Apple\',\'age\'=> 18),
 3       1=>array(\'id\'=>8,\'name\'=>\'Bed\',\'age\'=>17),
 4       2=>array(\'id\'=>5,\'name\'=>\'Cos\',\'age\'=>16),
 5       3=>array(\'id\'=>5,\'name\'=>\'Cos\',\'age\'=>14)
 6 );
 7 function sortArrByManyField(){
 8   $args = func_get_args(); // 获取函数的参数的数组
 9   if(empty($args)){
10     return null;
11   }
12   $arr = array_shift($args);
13   if(!is_array($arr)){
14     throw new Exception("第一个参数不为数组");
15   }
16   foreach($args as $key => $field){
17     if(is_string($field)){
18       $temp = array();
19       foreach($arr as $index=> $val){
20         $temp[$index] = $val[$field];
21       }
22       $args[$key] = $temp;
23     }
24   }
25   $args[] = &$arr;//引用值
26   call_user_func_array(\'array_multisort\',$args);
27   return array_pop($args);
28 }
29 $arr = sortArrByManyField($array1,\'id\',SORT_ASC,\'name\',SORT_ASC,\'age\',SORT_DESC);
30 print_r($arr);

结果如下:

 1 array(4) {
 2       [0]=>array(3) {
 3             ["id"]=>int(5)
 4             ["name"]=>string(3) "Cos"
 5             ["age"]=>int(16)
 6           }
 7       [1]=>array(3) {
 8             ["id"]=>int(5)
 9             ["name"]=>string(3) "Cos"
10             ["age"]=>int(14)
11           }
12       [2]=>array(3) {
13             ["id"]=>int(8)
14             ["name"]=>string(5) "Apple"
15             ["age"]=>int(18)
16           }
17       [3]=>array(3) {
18             ["id"]=>int(8)
19             ["name"]=>string(3) "Bed"
20             ["age"]=>int(17)
21       }
22     }
 原文:https://blog.csdn.net/qq_33980878/article/details/84030679 

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap