我知道这个问题非常棘手,我犯了一个很大的错误,我无法实现。我想加载一个包含日期的数组。我有开始和结束日期。这是我的代码:
$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 )
答案 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);