将PHP数组排序3个值

时间:2014-11-12 17:44:23

标签: php arrays sorting array-multisort

我需要按三个值对数组进行排序。以下是设置阵列的基本设置:

$arr = array(
    '1' => array(
        'start' => '1234',
        'mh' => '12',
        'status' => '1'
    ),
    '2' => array(
        'start' => '9874',
        'mh' => '3',
        'status' => '9'
    ),
    '3' => array(
        'start' => '5678',
        'mh' => '6',
        'status' => '2'
    )
);

目前,我只需要排序2个值,array_multisort就派上用场了。现在我需要按以下顺序对所有三个值进行排序:状态(低) - >开始(低) - > MH(高)。意味着最低状态是第一个,然后是最低开始,然后是最高MH。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

按多列排序的一般解决方案:

usort($arr,function($a,$b) {
    return ($a['status'] - $b['status']) // status ascending
        ?: ($a['start'] - $b['start']) // start ascending
        ?: ($b['mh'] - $a['mh']) // mh descending
        ;
});