php使用数字键排序多元数组

时间:2017-09-17 16:15:55

标签: php arrays sorting

我正在制作活动日历。一切都需要按时间顺序排序。

这是我正在排序的数组:

$years = array(
    2018 => array(
        01 => array(),
        02 => array()
    ),
    2017 => array(,
        02 => array()
        01 => array()
    )
);

我最初有一个更大的数组用于填充此$years

使用ksort,我已正确排序years,即它们按时间顺序排列。但是,我无法对第三级进行排序(请参阅2017,我的数组是02,01,而它应该是01,02)。最后一个级别或数组(例如2017 > 02)已正确排序,这不是问题,因为它们按每个级别中的内容排序。

我已经尝试array_multisortksortusort而只是sort,但没有人允许我对我的键进行排序,因为它们是数字。

2 个答案:

答案 0 :(得分:3)

如何迭代子元素,并使用ksort()对它们进行排序:

<?php
$years = array(
    2018 => array(
        01 => array(),
        02 => array()
    ),
    2017 => array(
        02 => array(),
        01 => array()
    )
);
ksort($years);
foreach ($years as &$year) {
    ksort($year);
}
var_dump($years);

Demo

答案 1 :(得分:2)

希望这个会有所帮助。这里我们使用ksort来基于键对数组进行排序。

Try this code snippet here

ksort($years);
$result=array_map(
  function($array)  {
       ksort($array);
       return $array;
  },
  $years);