文档章节

PHP数组对象自定义排序

BearCatYN
 BearCatYN
发布于 2015/04/28 11:26
字数 491
阅读 906
收藏 1

最近工作中遇到一个问题:

有以下一个数组对象(即数组的元素是一个个包含多个字段的对象)进行多字段排序,该数组对象原始数据如下:

PHP数组对象自定义排序

排序规则如下:

1 默认按照对象的createtime字段升序排列。

2 创建时间相等的情况下,按照value字段升序排列。

按照以上排序规则,最终显示结果应该为:

Data[2]-> Data[3]-> Data[0]-> Data[1]

现在去查询PHP自带排序方法,简单排序(sort)只能满足按照某一个字段的键值或字母序顺序排列,例如对上述数组对象data进行sort排序后的显示结果分别为:

sort($data); 

        PHP数组对象自定义排序


       此处可以看到sort简单排序默认按照data数组的第一个字段paracode的键值进行升序排列,这不是我所想要的。

至此,由于本人需求的排序有比较复杂的逻辑,只能考虑自定义排序了。

PHP允许定义自己的排序算法,你可以通过创建你自己的比较函数,并把它传递给usort()函数来创建自定义排序。对于自定义比较函数,如果第一个参数比第二个参数小,则比较函数必须返回一个比0小的数,反之则必须返回一个比0大的数,两个参数相等则返回0 自定义排序格式如下:

usort(待排序数组,’自定义排序函数名’);

例如对数组data中元素的长度进行排序,执行PHP程序如下:

现在回到原问题,根据我的需求,自定义PHP排序函数如下: 

       PHP数组对象自定义排序

排序后结果如下:

PHP数组对象自定义排序

上图可见在createtime相等的情况下,paracode按照升序排列,正是我需要的结果,搞定。


本文转载自:http://blog.sina.com.cn/s/blog_884f408c0102uzxb.html

共有 人打赏支持
BearCatYN
粉丝 26
博文 158
码字总数 11947
作品 0
朝阳
程序员
私信 提问
[讨论]php 排序系列的函数内部的C实现是用了哪种排序算法?

ext/standard/php_array.h https://github.com/php/php-src/blob/master/ext/standard/php_array.h #ifndef PHPARRAYH #define PHPARRAYH PHPMINITFUNCTION(array);PHPMSHUTDOWNFUNCTION(arr......

justjavac
2013/08/16
149
1
php对二维数组进行相关操作(排序、转换、去空白等)

php对二维数组进行相关操作(排序、转换、去空白等) 投稿:lijiao 字体:[增加 减小] 类型:转载 时间:2015-11-04 这篇文章主要介绍了php对二维数组进行相关操作,包括php对二维数组排序、...

thinkyoung
2015/11/09
0
0
数组重排序以及优雅的compare函数

JavaScript数组排序,默认支持两种:排序和逆序。 reverse() 没什么好介绍的,就是把数组反转一下。 sort() & 优雅的写compare函数 有两个重点: 排序方法比较的是字符串 排序方法可以自定义...

歇歇
2017/12/13
0
0
PHP 函数 数组

一、自定义函数 自定义函数就是我们自己定义的函数,在PHP中自定义函数格式如下: function funname(arg1, arg2, arg3......){ //TODO return values; } 输出结果: 下面再举一个可变参数的函...

ufo00001
2017/06/28
0
0
php多维数组自定义排序 uasort()

php内置的排序函数很多;正反各种排; 常用的排序函数: sort() - 以升序对数组排序 rsort() - 以降序对数组排序 asort() - 根据值,以升序对关联数组进行排序 ksort() - 根据键,以升序对关...

白俊遥
2016/04/04
2
0

没有更多内容

加载失败,请刷新页面

加载更多

延迟队列实现精准的订单超时取消--自我记录备份

订单的超时取消很多系统采用定时任务,实际上达不到要求。我用的是延迟队列,但缺点是只实现了基于jvm的,分布式采用的是修改之前去查询订单状态,以及分布式锁获取的方式来控制,这样获得锁...

checkboxMan
36分钟前
1
0
storm 环境搭建

1.下载解压 下载地址:http://storm.apache.org/downloads.html #下载wget https://www-us.apache.org/dist/storm/apache-storm-1.2.2/apache-storm-1.2.2.tar.gz#解压tar -zxf apache......

MrPei
51分钟前
1
0
Python Base - 读写文件,字符串拼接,单引号

字符转义 读写文件cvs 字符串拼接,替换 import csvcsv_file_name = 'cardbin.csv'# insert into `card_bin_code` (name_of, code_of, card_no_prefix, bank_code) values ('中国银行......

园领T
52分钟前
1
0
基于JQUERY BOOTSTRAP 最简单的loading遮罩层

<%--loading遮罩层--%><div class="modal fade" id="loadingModal" backdrop="static" keyboard="false">   <div style="width: 200px;height:20px; z-index: 20000; position: abs......

颖辉小居
53分钟前
1
0
springboot+kafka

1,首先springboot对kafka的支持也很好,同样是在配置文件中配置好参数,然后就可以直接使用。先说一下,很简单,,,不要怕 2,我用的依赖是 <dependency> <groupId>org.springframewor...

我真是小菜鸡
57分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部