以DESC顺序排序数组

时间:2012-11-06 12:27:20

标签: php arrays

如何按DESC顺序对内部数组键进行排序?

我可以使用arsort()以DESC顺序对11,12进行排序,但内部数组保持不变。我尝试了array_multisort()usort()和其他人,但没有运气。

Array
(
    [11] => Array
        (
            [4] => apr11timetable.php
            [8] => aug11timetable.php
            [6] => jun11timetable.php
            [11] => nov11timetable.php
            [10] => oct11timetable.php
        )
    [12] => Array
        (
            [4] => apr12timetable.php
            [8] => aug12timetable.php
            [2] => feb12timetable.php
            [6] => jun12timetable.php
            [10] => oct12timetable.php
        )
)

4 个答案:

答案 0 :(得分:0)

我认为没有简单的功能可以完成,所以我想出了这个代码:

arsort($file_list);

foreach ($file_list as $key => $inner_array)
{
    krsort($inner_array);
    $file_list[$key] = $inner_array;
}

echo '<pre>'; print_r($file_list);

答案 1 :(得分:0)

这应该有效

foreach ($arr as &$ar) { arsort($ar); }

http://codepad.org/ne2ldv9w

答案 2 :(得分:0)

您可以尝试使用ksortArsort不会正确排序您的数组。

<pre>
<?php
$array = Array(
    11 => Array(
        4 => 'apr11timetable.php',
        8 => 'aug11timetable.php',
        6 => 'jun11timetable.php',
        11 => 'nov11timetable.php',
        10 => 'oct11timetable.php'
    ),
    12 => Array(
        4 => 'apr12timetable.php',
        8 => 'aug12timetable.php',
        2 => 'feb12timetable.php',
        6 => 'jun12timetable.php',
        10 => 'oct12timetable.php'
    )
);

krsort($array, SORT_NUMERIC);

foreach ($array as &$arr) {    
    krsort($arr, SORT_NUMERIC);
}

print_r($array);
?>
</pre>

答案 3 :(得分:0)

运行以下代码:

array_walk($array,'krsort');