PHP: Форматирование многомерного массива как HTML?

Я попытался задуматься о создании рекурсивной функции для обработки форматирования неизвестного многомерного массива глубины в HTML и вложенных Div. Я думал, что это должен быть кусок пирога, но нет.

Вот что я догадался до сих пор:

function formatHtml($array) { $var = '<div>'; foreach ($array as $k => $v) { if (is_array($v['children']) && !empty($v['children'])) { formatHtml($v['children']); } else { $var .= $v['cid']; } } $var.= '</div>'; return $var; } 

И вот мой массив:

 Array ( [1] => Array ( [cid] => 1 [_parent] => [id] => 1 [name] => 'Root category' [children] => Array ( [2] => Array ( [cid] => 2 [_parent] => 1 [id] => 3 [name] => 'Child category' [children] => Array () ) ) ) ) 

Вам не хватает только одной важной части: когда вы делаете рекурсивный вызов formatHtml() вы на самом деле не включаете возвращаемое содержимое в любом месте! Добавьте его в $var и вы получите гораздо лучшие результаты:

 function formatHtml($array) { $var = '<div>'; foreach ($array as $k => $v) { if (is_array($v['children']) && !empty($v['children'])) { $var .= formatHtml($v['children']); } else { $var .= $v['cid']; } } $var.= '</div>'; return $var; }