2015-09-25 118 views
1

我試圖創建年,月,日,小時多維數組,所以我可以跟蹤以小時爲單位的某些數據。我試圖通過嵌套for循環來初始化這個數組,但是似乎在失敗中失敗了。多維數組 - PHP

$Year = array(); 

//This starts in 2015 and works until 2018 
for($z=0; $z < 3; ++$z) 
{ 
    $Month = array(); 
    array_push($Year, $Month); 

    //Months 
    for($a=0; $a < 12; ++$a) 
    { 
     //Days 
     for($b=0; $b < GetDaysInMonth($a); ++$b) 
     { 
      $Day = array(); 
      array_push($Month, $Day); 

      //Hours 
      for($c = 0; $c < 24; ++$c) 
      { 
       $Hours = array(0); 
       array_push($Day, $Hours); 
      } 
     } 
    } 
} 

目標是初始化大小爲24的數組小時,即推到一個數組爲天,天數組個月,幾個月陣列推入年。但是,每次嘗試訪問數據時,似乎都不存在。我在這裏做錯了什麼?

+0

你是如何試圖訪問數組元素?由於您使用'array_push()'填充數組,因此您的所有數組都將從索引0開始進行數字索引。您還在'for'循環中使用前綴增量(例如'++ $ a'),因此它們可能是執行時間少於您的預期。您可能希望更改爲後綴增量(例如'$ a ++')。例如,你的'$ Year'變量可能只有2個值,分別被索引爲'0'和'1',而不是幾年。使用'print_r()'轉儲數組的內容並查看其中的實際內容。 – Asaph

+0

[注意:如果使用array_push()向數組中添加一個元素,最好使用'$ array [] =',因爲這樣就沒有調用函數的開銷。](http://php.net) /manual/en/function.array-push.php) – Zsw

+0

感謝您的print_r()反饋。我不知道! –

回答

3

您必須array_push每個for

$Years = array(); 
//This starts in 2015 and works until 2018 
for($z=0; $z < 3; $z++) { 
    $Year = array(); 
    //Months 
    for($a=0; $a < 12; $a++) { 
     $Month = array(); 
     //Days 
     for($b=0; $b < GetDaysInMonth($a); $b++) { 
      $Day = array(); 
      //Hours 
      for($c = 0; $c < 24; $c++) { 
       $Hours = $c; 
       array_push($Day, $Hours); // push Hours into Day 
      } 
      array_push($Month, $Day); // push Days into Month 
     } 
     array_push($Year, $Month); // push Months into Year 
    } 
    array_push($Years, $Year); // push each Year in a var with all Years 
} 

編輯後:我添加了一個名爲$Years來存儲所有的變量年

+0

就是這樣!謝謝 :) –