账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    php usort排序在php7.2和5.6版本中结果不一样
    26
    0

    问题描述

    对数组进行排序,先对a字段正序排序,但0排到最后,再对b字段逆序排序

    实现代码

    
    // 对数组进行排序,先对a字段正序排序,但0排到最后,再对b字段逆序排序
    $a1 = array(
        array('a' => 1,'b' => 1),
        array('a' => 2,'b' => 1),
        array('a' => 1,'b' => 2),
        array('a' => 0,'b' => 1),
        array('a' => 1,'b' => 3),
        array('a' => 2,'b' => 2),
        array('a' => 0,'b' => 2),
        array('a' => 2,'b' => 3)
    );
    
    // 对a排序
    function my_sort1($a,$b) {
        if ($a['a'] == 0) {
            return 1;
        }
        if ($b['a'] == 0) {
            return -1;
        }
        if ($a['a'] > $b['a']) {
            return 1;
        }
        return -1;
    }
    
    // 对b排序
    function my_sort2($a,$b) {
        if ($a['a'] == $b['a']) {
            if ($a['b'] < $b['b']) {
                return 1;
            } elseif ($a['b'] > $b['b']) {
                return -1;
            }
        }
        return 0;
    }
    
    usort($a1,"my_sort1");
    usort2($a1,"my_sort2");

    返回结果

    php7.2返回结果正常
    Array
    (

    [0] => Array
        (
            [a] => 1
            [b] => 3
        )
    
    [1] => Array
        (
            [a] => 1
            [b] => 2
        )
    
    [2] => Array
        (
            [a] => 1
            [b] => 1
        )
    
    [3] => Array
        (
            [a] => 2
            [b] => 3
        )
    
    [4] => Array
        (
            [a] => 2
            [b] => 2
        )
    
    [5] => Array
        (
            [a] => 2
            [b] => 1
        )
    
    [6] => Array
        (
            [a] => 0
            [b] => 2
        )
    
    [7] => Array
        (
            [a] => 0
            [b] => 1
        )
    

    )
    php5.6返回结果有问题
    Array
    (

    [0] => Array
        (
            [a] => 0
            [b] => 2
        )
    
    [1] => Array
        (
            [a] => 0
            [b] => 1
        )
    
    [2] => Array
        (
            [a] => 2
            [b] => 3
        )
    
    [3] => Array
        (
            [a] => 2
            [b] => 2
        )
    
    [4] => Array
        (
            [a] => 2
            [b] => 1
        )
    
    [5] => Array
        (
            [a] => 1
            [b] => 3
        )
    
    [6] => Array
        (
            [a] => 1
            [b] => 2
        )
    
    [7] => Array
        (
            [a] => 1
            [b] => 1
        )
    

    )

    思考

    **查阅了相关信息,函数php7并没有修改usort方法
    疑问:是否php7版本对php数组进行了修改
    如果有大神知道的,还望不吝赐教!**

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部