下面的函数将数组排列完全错误。你是否注意到以下函数中有任何错误的代码?
function buildHtmlList($array)
{
$maxlevel = 0;
foreach ($array as $key => $value)
{
$previousparent = isset($array[$key - 1]['parent']) ? $array[$key - 1]['parent'] : null;
$nextparent = isset($array[$key + 1]['parent']) ? $array[$key + 1]['parent'] : null;
if ($value['parent'] != $previousparent)
{
echo "'n<ul>";
++$maxlevel;
}
echo "'n<li>" . $value['name'];
if ($nextparent == $value['parent'])
echo "</li>";
}
for ($i = 0; $i < $maxlevel; ++$i)
{
echo "'n</li>'n</ul>";
}
}
数组排列完全错误。你是否注意到以下函数中有任何错误的代码?
错误的部分是函数的整个逻辑。您将该数组视为一个平面列表(就像它一样!),但是,您希望显示一个树。
由于平面列表不能显示为树,因此需要先将平面列表更改为树,然后编写一个显示树的函数。
在前面的回答中有一个如何将平面数组转换为树/多维数组的示例。
尝试这样做(其中$array
的格式与您的示例类似):
$corrected_array = array();
// This loop groups all of your entries by their parent
foreach( $array as $row)
{
$corrected_array[ $row['parent'] ][] = $row['name'];
}
// This loop outputs the children of each parent
foreach( $corrected_array as $parent => $children)
{
echo '<ul>';
foreach( $children as $child)
{
echo '<li>' . $child . '</li>';
}
echo '</ul>';
}
演示