首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在php中对多维数组进行排序和分组

在php中对多维数组进行排序和分组
EN

Stack Overflow用户
提问于 2011-06-02 09:54:56
回答 2查看 638关注 0票数 1

我需要一些帮助在php中排序多维数组。我需要将数组分成几个月,然后按月排序。下面是我的原始数组:

代码语言:javascript
复制
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
        )

)

这是我希望得到的:

代码语言:javascript
复制
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
            )
    )

)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-02 10:04:08

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

代码语言:javascript
复制
$months = array();
foreach ($input_array AS $arr) {
  $months[$arr['Month']][] = $arr;
}
ksort($months);

如果需要,可以使用array_values将其转换为标准的整数键数组

票数 2
EN

Stack Overflow用户

发布于 2011-06-02 10:17:32

也许,就像这样:

代码语言:javascript
复制
$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_NUMERIC而不是SORT_ASC,我不确定。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6209625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档