2015-09-25 6 views
1

Я пытаюсь создать многомерный массив для Years, Months, Days, Hours, чтобы я мог отслеживать определенные данные на почасовой основе. Я пытаюсь инициализировать этот массив через вложенные для циклов, но, похоже, терпит неудачу в нем.Многомерный массив - 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. Вы также используете префиксные приращения (например, '++ $ a') в своих циклах' for', поэтому они могут быть выполняя на 1 меньше времени, чем вы ожидаете. Возможно, вам захочется перейти на приращения суффикса (например, '$ a ++'). Так, например, ваша переменная '$ Year', вероятно, имеет только 2 значения, индексированные как' 0' и '1' соответственно, а не годы. Используйте 'print_r()', чтобы выгрузить содержимое массивов и посмотреть, что на самом деле находится в них. – Asaph

+0

[Примечание. Если вы добавляете один элемент в массив, используйте '$ 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 
} 

Edit: я добавил переменную $Years хранить все годы

+0

Вот и все! Благодаря :) –

Смежные вопросы