> 백엔드 개발 > PHP 튜토리얼 > PHP数组对象自定义排序

PHP数组对象自定义排序

WBOY
풀어 주다: 2016-06-23 13:35:49
원래의
1425명이 탐색했습니다.

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

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

排序规则如下:

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


원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿