Он размещает массив совершенно неправильно. Вы заметили какой-то неправильный фрагмент кода в следующей функции?
Неправильная часть - вся логика функции. Вы рассматриваете массив как плоский список (как он есть!), Однако вы хотите отобразить дерево.
Поскольку плоский список не может быть отображен в виде дерева, необходимо сначала изменить плоский список на дерево, а затем написать функцию, отображающую дерево.
Пример того, как преобразовать плоский массив в дерево / многомерный, доступен в предыдущем ответе .