2017-03-01 163 views
0

我有下面的PHP代碼:PHP for循環不遞增

$todaysdate = date_create(); 
for ($i = date_sub(date_create(),date_interval_create_from_date_string("1 month")); $i <= $todaysdate; $i = date_add($i,date_interval_create_from_date_string("1 day"))) { 
    $json['message'][] = $i; 
} 

計數器$我亙古不變的增量可言。 $ I保持在Object { date="2017-03-02 20:00:55.000000", timezone_type=3, timezone="Asia/Kolkata"}

+1

嘗試' 「+1日」'在的結束for循環。 –

+0

@shaun嘗試過。沒有運氣。 – user3980196

+0

它適用於我在phptester.net,打印整個feb和3月的第一個 –

回答

1

正如RiggsFolly的建議,我的代碼更新到以下幾點:

$todaysdate = date_create(); 
for ($i = date_sub(date_create(),date_interval_create_from_date_string("1 month")); $i <= $todaysdate; $i = date_add($i,date_interval_create_from_date_string("+1 day"))) { 
    $json['message'][] = $i->format('d-m-Y'); 
} 

它現在的工作。唯一的變化是線$json['message'][] = $i->format('d-m-Y');

+0

使用DatePeriod類如何工作? '$ todaysdate = date_create(); $ month = new DatePeriod(date_sub($ todaysdate,date_interval_create_from_date_string(「1 month」)),date_interval_create_from_date_string(「1 day」),$ todaysdate); foreach($ month as $ day){。 ..' – SamuelMacleod

-1

我不知道爲什麼這是必要的,我很想知道原因。但是,如果您將$i轉換爲數組,然後返回到它的對象。

$todaysdate = date_create(); 
for ($i = date_sub(date_create(),date_interval_create_from_date_string("1 month")); $i <= $todaysdate; $i = date_add($i,date_interval_create_from_date_string("1 day"))) { 
    $json[] = (object)(array)$i; 
} 
print_r($json); 

結果:

Array 
(
    [0] => stdClass Object 
     (
      [date] => 2017-02-01 15:34:21.500729 
      [timezone_type] => 3 
      [timezone] => UTC 
     ) 

    [1] => stdClass Object 
     (
      [date] => 2017-02-02 15:34:21.500729 
      [timezone_type] => 3 
      [timezone] => UTC 
     ) 

    [2] => stdClass Object 
     (
      [date] => 2017-02-03 15:34:21.500729 
      [timezone_type] => 3 
      [timezone] => UTC 
     ) 

    [3] => stdClass Object 
     (
      [date] => 2017-02-04 15:34:21.500729 
      [timezone_type] => 3 
      [timezone] => UTC 
     ) 

    [4] => stdClass Object 
     (
      [date] => 2017-02-05 15:34:21.500729 
      [timezone_type] => 3 
      [timezone] => UTC 
     ) 

    [5] => stdClass Object 
     (
      [date] => 2017-02-06 15:34:21.500729 
      [timezone_type] => 3 
      [timezone] => UTC 
     ) 

    [6] => stdClass Object 
     (
      [date] => 2017-02-07 15:34:21.500729 
      [timezone_type] => 3 
      [timezone] => UTC 
     ) 

     .... etc