这一刻()让我疯了

时间:2012-11-10 11:44:03

标签: php

我知道这个问题非常棘手,我犯了一个很大的错误,我无法实现。我想加载一个包含日期的数组。我有开始和结束日期。这是我的代码:

$year_from=2011;
$month_from=1;
$year_till=2012;
$month_till=5;
$array=array();
$year=$year_from;
$month=$month_till;
while($year!=$year_till and $month!=$month_till){
    $array[]=$year.'-'.$month;
    if($month==12){
        $month=1;
        $year=$year+1;
    }else{
        $month=$month+1;
    }
}
print_r($array);

此脚本的输出将如下:

Array ( [0] => 2011-1 [1] => 2011-2 [2] => 2011-3 [3] => 2011-4 [4] => 2011-5 [5] => 2011-6 [6] => 2011-7 [7] => 2011-8 [8] => 2011-9 [9] => 2011-10 )

请帮助我知道这是一项非常简单的任务,但它让我发疯。 任何帮助都很受欢迎。

修改

期望的输出:

Array ( [0] => 2011-1 [1] => 2011-2 [2] => 2011-3 [3] => 2011-4 [4] => 2011-5 [5] => 2011-6 [6] => 2011-7 [7] => 2011-8 [8] => 2011-9 [9] => 2011-10 [10] => 2011-11 [11] => 2011-12 [12] => 2012-1 [13] => 2012-2 [14] => 2012-3 [15] => 2012-4 )

5 个答案:

答案 0 :(得分:2)

while(!($year==$year_till and $month==$month_till)){
    $array[]=$year.'-'.$month;
    if($month==12){
        $month=1;
        $year=$year+1;
    }else{
        $month=$month+1;
    }
}

条件现在是正确的,而两个月份和年份都是错误的,即当你达到目标日期时。

答案 1 :(得分:0)

尝试:

$year_from=2011;
$month_from=1;
$year_till=2013;
$month_till=11;
$array=array();
$year=$year_from;
$month=$month_from;
while($year!=$year_till and $month!=$month_till){
    $array[]=$year.'-'.$month;
    if($month==12){
        $month=1;
        $year=$year+1;
    }else{
        $month=$month+1;
    }
}
print_r($array);

答案 2 :(得分:0)

您可以运行两个for循环: 1.外部for循环将持续2011年至2013年(包括)。 2.内部for循环将持续1到12个月(以12比1重置它们)。    内环将检查年份是否等于2013年,然后在第11个月停止。

伪代码:

for (int year = 2011; year <= 2013; year++)
    for (int month = 1; month <= 12; month++)
    {
        //Add to array year and month
        //Check if year == 2013 && month == 11 the break loop
        //Check if month == 12 then month = 1
    }

我没有t recognize the language you use (I think it PHP)但我确定它有处理DateTime的类,并且有方法可以在月份中添加+1。在这种情况下,你使用一个while循环,它会在月份中增加+1并检查我们是否达到了所需的日期。

答案 3 :(得分:0)

我不确定你在逻辑上做了什么,但这里的代码是你想要的答案:

<?php 

$year_from=2011;
$month_from=1;
$year_till=2013;
$month_till=13;
$array=array();
$i = 0;

while($year_from < $year_till){
  while($month_from < $month_till){
     $array[$i] = $year_from.'-'.$month_from;
     $i++;
      $month_from++;
   }
  $year_from++;    
  $month_from= 1;

}

print_r($array);

?>

此输出

Array ( [0] => 2011-1 [1] => 2011-2 [2] => 2011-3 [3] => 2011-4 [4] => 2011-5 [5] => 2011-6 [6] => 2011-7 [7] => 2011-8 [8] => 2011-9 [9] => 2011-10 [10] => 2011-11 [11] => 2011-12 [12] => 2012-1 [13] => 2012-2 [14] => 2012-3 [15] => 2012-4 [16] => 2012-5 [17] => 2012-6 [18] => 2012-7 [19] => 2012-8 [20] => 2012-9 [21] => 2012-10 [22] => 2012-11 [23] => 2012-12 ) 

答案 4 :(得分:0)

$year_from=2011;
$month_from=1;
$year_till=2012;
$month_till=5;
$array=array();
$year=$year_from;
$month=$month_from;
echo "<br>".$year_till. " " .$month."<br>"; 
while($year!=$year_till || ($year==$year_till && $month!=$month_till)){
    $array[]=$year.'-'.$month;
    if($month==12){
        $month=1;
        $year=$year+1;
    }
    else{
        $month=$month+1;
    }
}
print_r($array);