【问题标题】:Sorting PHP array by 3 values按 3 个值对 PHP 数组进行排序
【发布时间】:2014-11-12 17:44:22
【问题描述】:

我需要按三个值对数组进行排序。下面是如何设置数组的基本设置:

$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。

任何帮助将不胜感激。

【问题讨论】:

    标签: php arrays sorting array-multisort


    【解决方案1】:

    多列排序的通用解决方案:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-19
      • 1970-01-01
      • 2015-02-19
      • 1970-01-01
      • 2012-06-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多