Я попытался задуматься о создании рекурсивной функции для обработки форматирования неизвестного многомерного массива глубины в 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; }