PHP数组对象自定义排序
PHP数组对象自定义排序
BearCatYN 发表于2年前
PHP数组对象自定义排序
  • 发表于 2年前
  • 阅读 488
  • 收藏 1
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

摘要: PHP数组对象自定义排序

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

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

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按照升序排列,正是我需要的结果,搞定。


标签: PHP 数组 对象 排序
共有 人打赏支持
粉丝 28
博文 157
码字总数 11947
×
BearCatYN
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: