Я хочу превратить следующий массив во вложенный список в html.
$aMenu = array(
array("name" => "Page 1",
"url" => "http://www.microsoft.se",
"subpages" => array(
array("name" => "Subpage 1.1", "url" => "http://www.reddit.com"),
array("name" => "Subpage 1.2", "url" => "http://www.google.se"),
array("name" => "Subpage 1.3", "url" => "http://www.cnn.com"),
)
),
array("name" => "Page 2", "url" => "http://www.facebook.com"),
array("name" => "Page 3",
"url" => "http://www.bbc.co.uk",
"subpages" => array(
array("name" => "Subpage 3.1", "url" => "http://www.jamesedition.com"),
array("name" => "Subpage 3.2", "url" => "http://www.huffpost.com"),
array("name" => "Subpage 3.3",
"url" => "http://www.lagunitas.com",
"subpages" => array(
array("name" => "Subpage 3.3.1", "url" => "http://www.burton.com"),
array("name" => "Subpage 3.3.2", "url" => "http://www.hm.com"),
array("name" => "Subpage 3.3.3", "url" => "http://www.apple.com"),
),
),
),
),
array("name" => "Page 4", "url" => "http://www.instagram.com"),
array("name" => "Page 5", "url" => "http://www.flickr.com"),
);
Желаемый результат:
Я знаю, как это сделать вручную, и я знаю, как перебирать отдельные уровни массива, но я не могу понять, как это сделать, и выводить результаты во вложенные списки. Я видел отдельные решения этих проблем, но я не могу заставить их работать вместе. Любая помощь будет оценена по достоинству.
PHP speudo-code:
function list2html($list)
{
$html = '';
foreach ($list as $item)
{
$html .= '<li>' . $item['name'];
if ( !empty($item['subpages']) ) // recurse here
$html .= list2html($item['subpages']);
$html .= '</li>';
}
return '<ul>' . $html . '</ul>';
}
Используйте следующее:
$html_output = list2html($aMenu);
Обратите внимание, что URL-адреса отсутствуют, вам придется изменить функцию, чтобы добавить их
Note2 Recursion не требуется, можно итератировать (или имитировать рекурсию с итерацией), и это будет более быстрый, но более сложный код
Вы должны сделать рекурсивную функцию, которая будет проходить через один уровень массива и называть его для каждого массива, найденного в качестве параметра.