3-уровневый вложенный массив в PHP и MYSQL

Я пытаюсь создать вложенный массив, чтобы создать вложенный список на веб-странице.

До сих пор мне удалось получить следующее:

Array
(
[2012] => Array
 (
 [Show 1] => Array
 (
 [0] => Class 1
 )

 [Show 2] => Array
 (
 [0] => Class 1
 )

 )

[2009] => Array
 (
 [Show 1] => Array
 (
 [0] => Class 1
 )

 )

[2008] => Array
 (
 [Show 1] => Array
 (
 [0] => Class 1
 )

 )

)

Однако мои фактические результаты имеют более 1 класса за показ, поэтому он должен выглядеть так:

[2012] => Array
 (
 [Show 1] => Array
 (
 [0] => Class 1
 [1] => Class 2
 [2] => Class 3
 )
etc etc etc.

Мне это удалось, но не знаю, как продолжить, чтобы получить более одного класса за показ.

Мой код выглядит следующим образом:

$handlerresults = $db->query("SELECT SHOW_NAME, YEAR, CLASS_NAME FROM vwhandlerresults WHERE HANDLER_ID = $gethandlerid ORDER BY YEAR DESC");
$showname = '';
while($row = $handlerresults->fetch_array(MYSQLI_ASSOC)) {
$year = $row['YEAR'];
$show = $row['SHOW_NAME'];
$results[$year][$show] = array($row['CLASS_NAME']);
}
print_r($results);
1 ответ

Попробуйте изменить

$results[$year][$show] = array($row['CLASS_NAME']);

в

$results[$year][$show][] = $row['CLASS_NAME']

Я думаю, проблема в том, что вы переписываете свой массив каждый раз, когда вы проходите через цикл с тем же "шоу". Если вы сделаете то, что я сказал выше, вместо того, чтобы переписывать, он добавит следующий класс в следующий доступный индекс.

licensed under cc by-sa 3.0 with attribution.