我不认为你应该进入对象.另外我认为生成对象等只是额外的工作.在我看来,你应该遍历数组并生成一个代表导航层次结构的多维数组,然后递归循环生成的数组以生成HTML.我已经为你做了一个示例代码,它按你想要的方式工作,但你可能想做一些改变.
功能
// Generate your multidimensional array from the linear array
function GenerateNavArray($arr, $parent = 0)
{
$pages = Array();
foreach($arr as $page)
{
if($page['parent'] == $parent)
{
$page['sub'] = isset($page['sub']) ? $page['sub'] : GenerateNavArray($arr, $page['id']);
$pages[] = $page;
}
}
return $pages;
}
// loop the multidimensional array recursively to generate the HTML
function GenerateNavHTML($nav)
{
$html = '';
foreach($nav as $page)
{
$html .= '
- ';
$html .= '' . $page['name'] . '';
$html .= GenerateNavHTML($page['sub']);
$html .= '
}
return $html;
}
**样品用量**
$nav = Array
(
Array
(
'id' => 27,
'name' => 'home',
'link' => 'home.html',
'parent' => 0
),
Array
(
'id' => 30,
'name' => 'about',
'link' => 'about.html',
'parent' => 27
)
);
$navarray = GenerateNavArray($nav);
echo GenerateNavHTML($navarray);
您可以一步完成这两件事,但我认为首先生成多维数组更为简洁.祝好运!