文档章节

PHP 数组按多个字段排序

o
 osc_y8yehimr
发布于 2019/03/20 14:53
字数 292
阅读 10
收藏 0

精选30+云产品,助力企业轻松上云!>>>

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

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

 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
o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
按对象字段对对象数组进行排序

如何按对象的字段之一(例如或对这个对象数组进行排序? #1楼 这是使用闭包的更好方法 请注意,这不在PHP文档中,但是如果您使用5.3+闭包,则可以在其中提供可调用参数。 #2楼 如果您使用的是...

javail
01/18
69
0
如何使用强大的PHP函数对数组进行排序

这些天找工作,所以就看起了php用户手册,数组是必须要了解的,所以就贴出来一起学习学习。 如果你已经使用了一段时间PHP的话,那么,你应该已经对它的数组比较熟悉了——这种数据结构允许你...

Adam-Lee
2011/07/23
9.7K
2
浅析PHP中redis的使用

一、Redis 连接与认证 连接参数:ip、端口、连接超时时间,连接成功返回 true,否则返回 false 密码认证:成功返回 true,否则返回 false 二、String 操作 设置键值:成功返回 true,否则返回...

逐风Tony
2019/08/17
7
0
PHP array_multisort() 函数

写了这么多年PHP,才刚发现这个函数。当然,你也可以 [点这里][1] 看手册里的介绍,不过我个人觉得说得并不清楚,举个例子更好理解一些。当遇到这样子一个表单, 想要获取按sort字段排列好的...

王道中强流
2013/11/23
252
0
php 二维数组按某个字段排序

主要用到两个函数: 1.array_column() 返回输入数组中某个单一列的值。php版本5.5以后自带 这里提供个php版本低于5.5的兼容方式 if (!functionexists('arraycolumn')){ } 2.array_multisort...

osc_575sntwo
2019/07/29
2
0

没有更多内容

加载失败,请刷新页面

加载更多

如果你失明了,你怎么编程? - How can you program if you're blind?

问题: Sight is one of the senses most programmers take for granted. 视觉是大多数程序员认为理所当然的感官之一。 Most programmers would spend hours looking at a computer monitor......

技术盛宴
22分钟前
10
0
如何删除使用Python的easy_install安装的软件包? - How do I remove packages installed with Python's easy_install?

问题: Python's easy_install makes installing new packages extremely convenient. Python的easy_install使安装新包非常方便。 However, as far as I can tell, it doesn't implement th......

fyin1314
52分钟前
11
0
如何将逗号分隔的字符串转换为数组? - How to convert a comma separated string to an array?

问题: I have a comma separated string that I want to convert into an array, so I can loop through it. 我有一个逗号分隔的字符串,我想将其转换成数组,因此可以循环遍历它。 Is the...

富含淀粉
今天
13
0
深源恒际:担心个人身份被冒用?不存在!

本文作者:c****t 近日,苟晶被冒名顶替身份参加高考的事件在社会各界掀起广泛热议。事件调查结果公布后,舆论风向逆转,吃瓜群众认为当事人夸大其词消费了公众情绪,一边对当事人所遭遇的不...

百度开发者中心
昨天
5
0
CKEditor 5 + SpringBoot实战(三):SpringData JPA数据持久化

在本系列的文章中,我将介绍如何在Spring Boot Application中使用CKEditor编辑器。介绍的内容包括基本环境的搭建,文件上传,SpringData JPA数据持久化,CKEditor5的安装,CKEditor图片上传,...

树下魅狐
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部