按一个值对多维PHP数组进行排序,但按另一个

时间:2016-07-13 13:44:59

标签: php sorting multidimensional-array

我有一个像这样的多维数组:

Array
(
[0] => Array
    (
        [ID] => 1
        [date_start] => 2016-07-30
        [customerID] => 15
        [job_type] => service
    )

[1] => Array
    (
        [ID] => 2
        [date_start] => 2016-08-10
        [customerID] => 12
        [job_type] => service
    )

[2] => Array
    (
        [ID] => 3
        [date_start] => 2016-08-20
        [customerID] => 15
        [job_type] => service
    )

etc

我想对数据进行排序,以便显示在" date_start"订购,但保持customerID在一起。

所以,在上面的代码中,如果我按date_start排序,它将按以下顺序排列:

ID - 1,2,3。

但是,我想将客户ID保持在一起,但仍按date_start排序。因此,我希望订单是:

ID - 1,3,2

所以,从本质上讲,我需要它来对客户进行分组,找到该客户的最早日期,并按照这个最早的日期排序。

这可能吗?

由于

1 个答案:

答案 0 :(得分:2)

使用array_multisort

function orderMultiArray(array $data)
    {
        $sort = array();

        foreach ($data as $key => $value) {
            $sort['date_start'][$key] = $value['date_start'];
            $sort['customerID'][$key] = $value['customerID'];
        }

        array_multisort($sort['date_start'], SORT_ASC, $sort['customerID'], SORT_ASC, $data);

        return $data;
    }