PHP usort排序多个字段 [英] PHP usort sorting multiple fields

查看:114
本文介绍了PHP usort排序多个字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

时有可能使用 usort 来多个字段多维数组排序?例如,我要排序名称按字母顺序,然后从我想通过年龄对它们进行排序的记录。这可能使用排序

 阵列([0] =>数组
               ([名] =>约拿
                 [年龄] => 27)
        [1] =>排列
               ([名] =>比安卡
                 [年龄] => 32)
      )


解决方案

如何

  $ ARR =阵列(
    0 =>阵列(
        '名'=> 约拿,
        '年龄'=> '27',
    )
    1 =>阵列(
        '名'=> 比安卡,
        '年龄'=> '32',
    )
    2 =>阵列(
        '名'=> 约拿,
        '年龄'=> '25',
    )
    3 =>阵列(
        '名'=> 比安卡,
        '年龄'=> '35',
    )
);
功能补偿($ A,$ B){
    如果($ A [名称] == $ B ['名']){
        返回$ a ['年龄'] - $ B ['年龄'];
    }
    返回STRCMP($ A ['名'],$ B ['名']);
}usort($改编,'补偿');
的print_r($ ARR);

输出:

 阵列

    [0] =>排列
        (
            [名] =>比安卡
            [年龄] => 32
        )    [1] =>排列
        (
            [名] =>比安卡
            [年龄] => 35
        )    [2] =>排列
        (
            [名] =>约拿
            [年龄] => 25
        )    [3] =>排列
        (
            [名] =>约拿
            [年龄] => 27
        ))

Is it possible to use usort to sort multiple fields in a multidimensional array? For example I want to sort name alphabetically and then from those records I want to sort them by age. Is this possible using sort?

Array ( [0] => Array 
               ( [name] => Jonah 
                 [age] => 27 )
        [1] => Array 
               ( [name] => Bianca 
                 [age] => 32 )
      )

解决方案

How about:

$arr = Array (
    0 => Array (
        'name' => 'Jonah',
        'age' => '27',
    ),
    1 => Array (
        'name' => 'Bianca',
        'age' => '32',
    ),
    2 => Array (
        'name' => 'Jonah',
        'age' => '25',
    ),
    3 => Array (
        'name' => 'Bianca',
        'age' => '35',
    ),
);
function comp($a, $b) {
    if ($a['name'] == $b['name']) {
        return $a['age'] - $b['age'];
    }
    return strcmp($a['name'], $b['name']);
}

usort($arr, 'comp');
print_r($arr);

output:

Array
(
    [0] => Array
        (
            [name] => Bianca
            [age] => 32
        )

    [1] => Array
        (
            [name] => Bianca
            [age] => 35
        )

    [2] => Array
        (
            [name] => Jonah
            [age] => 25
        )

    [3] => Array
        (
            [name] => Jonah
            [age] => 27
        )

)

这篇关于PHP usort排序多个字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆