PHP生成与年份和月份显示的数字阵列

问题描述:

我有形式的两个日期:PHP生成与年份和月份显示的数字阵列

开始日期:2010-12-24
结束日期:2011-10-06(今天)

现在我需要生成该组由本月从上面开始日期和结束日期的数组:

$arr_month['oct_11'] = array(
    'month' => 'October 2011' 
); 
. 
. 
. 
$arr_month['feb_11'] = array(
    'month' => 'Feb 2011' 
); 

$arr_month['jan_11'] = array(
    'month' => 'January 2011' 
); 

$arr_month['dec_10'] = array(
    'month' => 'December 2010' 
); 

正如你所看到的表应该有如果我使用这个数组来生成一个表,那么表中有11行。

+0

这是不是真的清楚自己想要做什么。你能详细解释一下吗? – ronakg

+0

我想用数组生成一个表格。用户只能输入from和end date。我希望它按月分组。 – Shiro

$start_date = '2010-12-24'; 
$end_date = '2011-10-06'; 

function getMonthArray($start_date, $end_date){ 
    $start_timestamp = strtotime(str_replace('-', '/', $start_date)); 
    $end_timestamp = strtotime(str_replace('-', '/', $end_date)); 

    $start_month_timestamp = strtotime(date('F Y', $start_timestamp)); 
    $current_month_timestamp = strtotime(date('F Y', $end_timestamp)); 

    $arr_month = array(); 

    while($current_month_timestamp >= $start_month_timestamp) { 
     $arr_month[strtolower(date('M_y', $end_timestamp))] = date('F Y', $end_timestamp); 
     $end_timestamp = strtotime('-1 month', $end_timestamp); 

     $current_month_timestamp = strtotime(date('F Y', $end_timestamp)); 
    } 

    return $arr_month; 
} 

$arr_month = getMonthArray($start_date, $end_date); 

Demo

+0

你的家伙真棒!反应非常快!尊重 – Shiro

$start = "2010-12-24"; 
$end = "2011-10-06"; 

function enumerate($start,$end) { 
     $start = strtotime($start); 
     $end = strtotime($end . "+1 month"); 
     $range = range($start,$end,60*60*24*31); 
     $formatted = array(); 
     foreach($range as $date) { 
     $key = strtolower(str_replace(" ","_",date("M Y",$date))); 
     $formatted[$key] = array(

         "month" => date('M Y',$date), 
         "amount" => "365" 
       ); 
     }  
     return $formatted; 
} 

var_dump(enumerate($start,$end)); 

<?php 

$start = strtotime(substr_replace('2010-12-24', '01', -2)); 
$end = strtotime('2011-10-06'); 

$time = $start; 
$arr_month = array(); 
while ($time <= $end) { 
    $arr_month[strtolower(date('M_y', $time))]['month'] = date('F Y', $time); 
    $time += date('t', $time) * 24 * 60 * 60; 
} 

var_dump($arr_month); 

http://ideone.com/ozLOx