usort 对多个字段进行排序

新手上路,请多包涵

是否可以使用 usort 对多维数组中的多个字段进行排序?例如,我想按字母顺序排序 name 然后从那些记录中我想按 age 对它们进行排序。这可能使用 sort 吗?

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

原文由 user1205775 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
1 个回答

怎么样:

 $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);

输出:

 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
        )

)

原文由 Toto 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏