在PHP中通过键对多维数组进行排序的最佳方法

时间:2013-07-21 09:03:06

标签: php sorting multidimensional-array

我正在寻找以这种方式对多维数组进行排序的最佳(最快)方法:

array(
        2010 => array(
            1 => array(
                26 => 'some value',
                29 => 'some value',
                31 => 'some value'
            ),
            7 => array(
                13 => 'some value',
                25 => 'some value',
                4 => 'some value'
            )
        ),
        2011 => array(
            12 => array(
                5 => 'some value',
                3 => 'some value',
                19 => 'some value'
            ),
            2 => array(
                7 => 'some value',
                30 => 'some value',
                14 => 'some value'
            )
        )
    )

正如您所看到的,我使用年,月和日作为键,我需要通过此键对数组进行排序。我真的很感激任何帮助。

由于

2 个答案:

答案 0 :(得分:3)

你可以试试这个。可以使用递归函数使其更通用,但我认为这在你的情况下已经足够了。

foreach ($years as &$months){
  foreach ($months as &$days){
    ksort($days);
  }
  ksort($months);
}
ksort($years);

答案 1 :(得分:2)

您可以尝试“array_walk_recursive”以递归方式访问多维数组中的项以减少函数调用。一个例子:

function custom_sort(&$val, $key) {
    if (is_array($val)) {
        ksort($val);
    }
}

array_walk_recurisive($arrInput, 'custom_sort');