设为首页 收藏本站
查看: 1142|回复: 0

[经验分享] php多维数组自定义排序 uasort()

[复制链接]

尚未签到

发表于 2018-12-17 08:13:44 | 显示全部楼层 |阅读模式
  php内置的排序函数很多;正反各种排;
  常用的排序函数:
  sort() - 以升序对数组排序
rsort() - 以降序对数组排序
asort() - 根据值,以升序对关联数组进行排序
ksort() - 根据键,以升序对关联数组进行排序
arsort() - 根据值,以降序对关联数组进行排序
krsort() - 根据键,以降序对关联数组进行排序
  基本都能满足需求了;关于这些函数的使用方法就不多啰嗦了;

  但是在项目的实际开发中还是会有些更加苛刻的排序需求;今天要介绍的排序函数是: uasort()
  uasort主要是用在需要按照自定义的方法并且保留索引关系多维数组的排序上;
  有如下数组
$sort_array = array(
    "array1" => array(
        'word'=>'test1',
        'sortnumber'=>1,
    ),
    'array3'=>array(
        'word'=>'test4',
        'sortnumber'=>4,
    ),
    'array2'=>array(
        'word'=>'test3',
        'sortnumber'=>3,
    ),
    'array5'=>array(
        'word'=>'test5',
    ),
    'array4'=>array(
        'word'=>'test2',
        'sortnumber'=>2,
    ),
);  需求是按照sortnumber以升序的方式排序;
  首先需要写一个自定义排序的规则;
// 自定义排序函数
function my_sort($a,$b){
    $prev = isset($a['sortnumber']) ? $a['sortnumber'] : 0;
    $next = isset($b['sortnumber']) ? $b['sortnumber'] : 0;
    if($prev == $next)return 0;
    return ($prev Array
        (
            [word] => test1
            [sortnumber] => 1
        )
    [array3] => Array
        (
            [word] => test4
            [sortnumber] => 4
        )
    [array2] => Array
        (
            [word] => test3
            [sortnumber] => 3
        )
    [array5] => Array
        (
            [word] => test5
        )
    [array4] => Array
        (
            [word] => test2
            [sortnumber] => 2
        )
)
排序后:
Array
(
    [array5] => Array
        (
            [word] => test5
        )
    [array1] => Array
        (
            [word] => test1
            [sortnumber] => 1
        )
    [array4] => Array
        (
            [word] => test2
            [sortnumber] => 2
        )
    [array2] => Array
        (
            [word] => test3
            [sortnumber] => 3
        )
    [array3] => Array
        (
            [word] => test4
            [sortnumber] => 4
        )
)  最后需要提醒的是:自定义的函数要使用isset检测下需要排序的字段是否存在如不存在赋个默认的0;不然会有报错提示;
DSC0000.png

  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-652212-1-1.html 上篇帖子: PHP设计模式 外观设计模式 下篇帖子: 生成多个不重复的随机数字php
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表