登录  /  注册

PHP数组对象自定义排序

php中文网
发布: 2016-06-23 13:35:49
原创
1247人浏览过

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

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

排序规则如下:

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

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

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

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

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

sort($data); 

        


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

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

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

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

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

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

       

排序后结果如下:


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


智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
关于CSS思维导图的课件在哪? 课件
凡人来自于2024-04-16 10:10:18
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号