我想用这个数组建立一棵树.这些是Id的os类别和子类别 [英] I want to build a tree with this array . These are the Id's os categories and sub categories
问题描述
我正在尝试将平坦的mysql行变成树形结构.这是类别和子类别的ID
I am trying to turn flat mysql rows into a tree structure. Here is the id's of the categories and Sub categories
数组 ( [50] =>数组 ( [70] =>数组 ( [0] =>数组 ( [73] =>数组 ( [80] =>数组 ( )
Array ( [50] => Array ( [70] => Array ( [0] => Array ( [73] => Array ( [80] => Array ( )
)
[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>
基本上,我需要用类别子类别sub sub .. categoreis等构建一棵树. 预先感谢
BAsically i need to build a tree with categories sub categories sub sub .... categoreis etc. Thanks in advance
推荐答案
已确定.我花了半天时间.不好意思告诉您,但是您必须更改数组的定义.代替使用叶节点的空数组,而使用具有任何值的非数组值...像这样:
Edited: OK. I spent half a day on this. I'm sorry to tell you this, but you'll have to change the definition of your array. Instead of an empty array for the leaf nodes, use a non-array value that has any value... Like this:
$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" =>"也不起作用.
I don't know why, but if the leaf node has null or empty array value, it doesn't get accessed by next($array). Even if it is an empty string, so "35"=>"" won't work.
如果不使用next()和current(),则不能使用key(),因此结构的改变是不可避免的.
If you don't use next() and current() you can't use key(), so a change in the structure is inevitable.
这篇关于我想用这个数组建立一棵树.这些是Id的os类别和子类别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!