我正在尝试将平面 mysql 行转换为树结构。这是类别和子类别的 id
数组( [50] => 数组 ( [70] => 数组 ( [0] => 数组 ( [73] => 数组 ( [80] => 数组 ( )
)
[74] => Array
(
)
[75] => Array
(
)
)
)
[71] => Array
(
[0] => Array
(
)
)
[72] => Array
(
[0] => Array
(
)
)
[73] => Array
(
[0] => Array
(
[80] => Array
(
)
)
)
[74] => Array
(
[0] => Array
(
)
)
[75] => Array
(
[0] => Array
(
)
)
[80] => Array
(
[0] => Array
(
)
)
)
[51] => Array
(
[76] => Array
(
[0] => Array
(
[77] => Array
(
)
)
)
[77] => Array
(
[0] => Array
(
)
)
[78] => Array
(
[0] => Array
(
[79] => Array
(
[81] => Array
(
)
)
)
)
[79] => Array
(
[0] => Array
(
[81] => Array
(
)
)
)
[81] => Array
(
[0] => Array
(
)
)
)
)
我以这种方式想要输出
<ul id="red" class="treeview-famfamfam">
<li>50
<ul> <li> 70
<ul><li> 73 <ul>
<li> 80</li></ul>
</li>
<li> 74</li>
<li>75 </li>
</ul>
</li>
<li>71</li>
<li> 72</li>
</ul>
</li>
基本上,我需要构建一个带有类别子类别子子的树....分类等提前致谢
编辑:确定。我花了半天时间。很抱歉告诉您这一点,但您必须更改数组的定义。不要为叶节点使用空数组,而是使用具有任何值的非数组值...喜欢这个:
$ar=array("50" => array ( "70" => array ( "0" => array("35" => "leaf"),"3"=>"leaf" ) ) );
然后使用这个:
function MakeTree($array){
$return="";
if(!is_array($array)) return;
while($member=current($array)){
$return.="<li>".key($array);
$return.="<ul>".MakeTree($member)."</ul></li>";
next($array);
}
return $return;
}
$ar=array("50" => array ( "70" => array ( "0" => array("35" => "leaf"),"3"=>"leaf" ) ) );
echo(MakeTree($ar));
我不知道为什么,但如果叶节点具有空或空数组值,则 next($array) 无法访问它。即使它是一个空字符串,所以"35"=>"也不起作用。
如果你不使用 next() 和 current(),你就不能使用 key(),所以结构的变化是不可避免的。