数组中的多个排序

gla*_*kou 5 php arrays multidimensional-array

我有以下数组:

Array
(
[0] => Array
    (
        [note] => test
        [year] => 2011
        [type] => football
    )

[1] => Array
    (
        [note] => test1
        [year] => 2010
        [type] => basket
    )

[2] => Array
    (
        [note] => test2
        [year] => 2012
        [type] => football
    )

[3] => Array
    (
        [note] => test3
        [year] => 2009
        [type] => basket
    )

[4] => Array
    (
        [note] => test4
        [year] => 2010
        [type] => football
    )

)
Run Code Online (Sandbox Code Playgroud)

我想先按类型按另一个数组排序:

例如: $sort = array('football','basket');

然后逐年.

我怎样才能做到这一点?

谢谢.

期望的输出应该是:

Array
(
[2] => Array
    (
        [note] => test2
        [year] => 2012
        [type] => football
    )
[0] => Array
    (
        [note] => test
        [year] => 2011
        [type] => football
    )
[4] => Array
    (
        [note] => test4
        [year] => 2010
        [type] => football
    )

[1] => Array
    (
        [note] => test1
        [year] => 2010
        [type] => basket
    )

[3] => Array
    (
        [note] => test3
        [year] => 2009
        [type] => basket
    )

)
Run Code Online (Sandbox Code Playgroud)

我不介意我们重置索引值.

谢谢.

laf*_*for 2

使用array_multisort。假设你的数组是$arr

foreach($arr as $key=>$row) {
    $type[$key] = $row['type'];
    $year[$key] = $row['year'];
}
array_multisort($type, SORT_ASC, $year, SORT_ASC, $arr);
Run Code Online (Sandbox Code Playgroud)

要使用指定类型顺序的附加数组,您可以这样做:

$sortBy = array('football','basket');
foreach($arr as $key=>$row) {
    $type[$key] = array_search($row['type'],$sortBy);
    $year[$key] = $row['year'];
}
array_multisort($type, SORT_ASC, $year, SORT_ASC, $arr);
Run Code Online (Sandbox Code Playgroud)

示例链接:

http://codepad.org/qhZCpbZE