如何从php中的数组获取月份数据

时间:2014-02-07 08:26:49

标签: php arrays

我有以下表格的数据

阵     (

[0] => Array
    (
        [event_id] => 2042632
        [event_name] => Georgia Tech Yellow Jackets vs. North Carolina Tar Heels
        [event_payment] => 156
        [payment_status] => 1
        [event_date] => 2014-01-29
    )

[1] => Array
    (
        [event_id] => 2042632
        [event_name] => Georgia Tech Yellow Jackets vs. North Carolina Tar Heels
        [event_payment] => 89
        [payment_status] => 1
        [event_date] => 2014-01-29
    )

[2] => Array
    (
        [event_id] => 2042632
        [event_name] => Georgia Tech Yellow Jackets vs. North Carolina Tar Heels
        [event_payment] => 772
        [payment_status] => 1
        [event_date] => 2014-01-29
    )

[3] => Array
    (
        [event_id] => 2042633
        [event_name] => Georgia Tech Yellow Jackets vs. North Carolina Tar Heels
        [event_payment] => 256
        [payment_status] => 0
        [event_date] => 2013-12-29
    )

)

我现在想要从这个数组中获取以下格式的数据:

January

Event-name, payment, status
georgia..   1234,    0
georgia..   3456,    1

December

Event-name, payment, status
georgia..   1234,    0
georgia..   3456,    1

依此类推。

请指导我如何做到这一点..

3 个答案:

答案 0 :(得分:2)

$res= array();
foreach($arr as $key => $val) // $arr is your actual array
{
    $month = date('F-Y', strtotime($val['event_date']));
    $res[$month][] = $val;
}

现在你得到的结果将是

[January-2014] = array(a1,a2...)
[December-2014] = array(a1,a2...)

答案 1 :(得分:2)

尝试

$result = array();
foreach($arr as $ar){
$date = DateTime::createFromFormat("Y-m-d", $ar['event_date']);
 $month = $date->format('F');
 $year = $date->format('Y');
 $result[$year][$month][] = $ar;
}

请参阅演示here

答案 2 :(得分:0)

这里我只建议如何按日期对数组进行排序。我希望你能自己完成剩下的工作。

function cmp($a, $b) {
    return (new DateTime($a['event_date']))->getTimestamp() < (new DateTime($b['event_date']))->getTimestamp()? -1 : 1;
}
usort($array, 'cmp');

$curr_month = 0;
foreach ($array as $elem) {
    // output elements of array based on month
    // ...
}