简体   繁体   English

如何从数组中获取月数据

[英]how to get data on month base from array in php

I have data in the following form 我有以下形式的数据

Array ( 数组(

[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
    )

)

All I want now to show data in the following format after getting from this array: 我现在想从该数组中获取以下格式的数据:

January

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

December

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

and so on and so forth. 等等等等。

please guide me how to do that.. 请指导我如何做..

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

Now you get will result as 现在您将得到结果为

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

Try 尝试

$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;
}

See demo here 在此处查看演示

Here I only suggest how to sort an array by date. 在这里,我仅建议如何按日期对数组进行排序。 I hope you can do the rest of the work yourself. 我希望您可以自己完成其余的工作。

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
    // ...
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM