【问题标题】:Split up Array of Dates based on Month or Year根据月份或年份拆分日期数组
【发布时间】:2012-03-03 05:42:10
【问题描述】:

我有一个数组,它返回一个请求的日期系列,我想根据一个变量按月或年分开这些日期。

当前数组示例:

array(4) {

[0]=> string(10) "2012-02-01"

[1]=> string(10) "2012-02-02"

[2]=> string(10) "2011-02-03"

[3]=> string(10) "2011-03-04"

[4]=> string(10) "2011-04-05"

}

为了在“月”或“年”视图中生成谷歌图表,我需要将这个数组分开,并根据用户偏好将“年”或“月”组合在一起,这将在一个变量中。

如果在“年视图”中,我需要返回的示例

array(2) {

 [0]=> Array(2) {

       [0]=> string(10) "2012-02-01"

       [1]=> string(10) "2012-02-02"

}

 [1]=> Array(3) {

       [0]=> string(10) "2011-02-03"

       [1]=> string(10) "2011-03-14"

       [2]=> string(10) "2011-04-18"

} 

}

不是 100% 确定这是否是一个声音数组,但我需要能够为每个日期数组集执行“foreach”语句,以便我可以将所有值相加(我需要的只是函数的日期go get the value) 并返回一个总值和年份,因为它们被分组,所以它们都是相同的,我将在 foreach 语句中分解最后一个数组的年份。

这是相同的预期结果,但处于“月”视图模式

array(3) {

 [0]=> Array(3) {

       [0]=> string(10) "2012-02-01"

       [1]=> string(10) "2012-02-02"

       [2]=> string(10) "2011-02-03"

}

 [1]=> Array(1) {



       [1]=> string(10) "2011-03-14"

} 

 [2]=> Array(1) {

       [1]=> string(10) "2011-04-18"

} 

}

任何帮助将不胜感激!在保持一切完好无损的同时,我似乎无法找到解决方案。

【问题讨论】:

    标签: php arrays foreach


    【解决方案1】:

    这样的?

    $years = Array();
    $months = Array();
    foreach($dates as $d) {
        list($y,$m) = explode("-",$d);
        $years[$y][] = $d;
        $months[$y."-".$m][] = $d;
    }
    $years = array_values($years);
    $months = array_values($months);
    
    var_dump($years,$months);
    

    【讨论】:

    • 可能是一件非常简单的事情,但有人可以解释一下这个 PHP 是如何工作的吗?我有一个类似的问题,但不能完全理解这个解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-05
    相关资源
    最近更新 更多