以下函数排列数组完全错误。您是否注意到以下功能中的任何错误代码?
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>";
}
}
答案 0 :(得分:0)
它排列的数组完全错误。您是否注意到以下功能中的任何错误代码?
错误的部分是函数的整个逻辑。您将数组视为一个平面列表(就像它一样!),但是,您希望显示一个树。
由于平面列表不能显示为树,因此您需要先将平面列表更改为树,然后编写显示树的功能。
如何将平面数组转换为树/多维数组的示例in a previous answer。
答案 1 :(得分:0)
尝试这样的事情(其中$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>';
}