Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中多维数组的排序和分组_Php_Sorting_Multidimensional Array_Grouping - Fatal编程技术网

php中多维数组的排序和分组

php中多维数组的排序和分组,php,sorting,multidimensional-array,grouping,Php,Sorting,Multidimensional Array,Grouping,我需要一些在php中排序多维数组的帮助。我需要将数组分组为月份,然后按月份排序。这是我的原始阵列: Array ( [0] => Array ( [IdEvent] => 5 [EventName] => Copy of Opening snow weekend [Year] => 2011 [Month] => 08 )

我需要一些在php中排序多维数组的帮助。我需要将数组分组为月份,然后按月份排序。这是我的原始阵列:

Array
(
    [0] => Array
        (
            [IdEvent] => 5
            [EventName] => Copy of Opening snow weekend
            [Year] => 2011
            [Month] => 08
        )

    [1] => Array
        (
            [IdEvent] => 7
            [EventName] => Copy of Copy of Opening snow weekend
            [Year] => 2011
            [Month] => 07
        )

    [2] => Array
        (
            [IdEvent] => 1
            [EventName] => Opening snow weekend
            [Year] => 2011
            [Month] => 05
        )

    [3] => Array
        (
            [IdEvent] => 6
            [EventName] => Copy of Opening snow weekend
            [Year] => 2011
            [Month] => 05
        )

)
以下是我希望得到的:

Array
(

    [0] => Array (

        [0] => Array
            (
                [IdEvent] => 1
                [EventName] => Opening snow weekend
                [Year] => 2011
                [Month] => 05
            )

        [1] => Array
            (
                [IdEvent] => 6
                [EventName] => Copy of Opening snow weekend
                [Year] => 2011
                [Month] => 05
            )

    )

    [1] => Array (

        [0] => Array
            (
                [IdEvent] => 7
                [EventName] => Copy of Copy of Opening snow weekend
                [Year] => 2011
                [Month] => 07
            )

    )

    [2] => Array (

        [0] => Array
            (
                [IdEvent] => 5
                [EventName] => Copy of Opening snow weekend
                [Year] => 2011
                [Month] => 08
            )
    )

)

我会为每个月的容器使用一个易于排序的键,然后只使用ksort

$months = array();
foreach ($input_array AS $arr) {
  $months[$arr['Month']][] = $arr;
}
ksort($months);

如果需要,您可以使用
array\u values
将其转换为标准的整数键数组

可能是这样的:

$sortedArray = array();

foreach ($unsortedArray as $key => $row) {
  $month[$key] = $row['month'];
  $year[$key]  = $row['year'];
}

$sortedArray =  array_multisort($year, SORT_ASC, $month, SORT_ASC, $unsortedArray);
  • 完全未经试验,未经测试,试验性的,从我的头顶
  • 我不确定,您可能需要SORT\u NUMERIC而不是SORT\u ASC
您的分拣逻辑是什么?也许我遗漏了一些东西,但我看不出你在排序什么。@stefgosselin:按年/月/日排序似乎是一种模式。好的,我想这是按月排序的。。所有的事件都是在一个给定的月份里排列的吗?是的,我试着用“月份”来对它们进行分组,你没有考虑这一年,当数组中有不同年份的密钥时,它们将不起作用。我现在不使用“年”,只是从数据库中拉动当前的一年来制作第一个数组,当我把它贴在这里的时候,应该把它删掉:)我选择了一些考虑到这一年的东西。但是,嘿,如果这对你来说效果更好;o)