PHP递归数组到UL(逻辑)

时间:2011-06-09 09:27:25

标签: php codeigniter

我指的是Convert array of paths into UL list

我找到了一个有用的答案这个函数但是从我正在做的是不能正常工作,因为我有一个带有id,parentid的MySQL表格结构,名称能够生成递归类别和子类别

所以我能够将数据导出到数组中,这个数组有一个名为CHILDREN的额外数组,其中包含子类别数组。

但是当我尝试使用此功能时

function buildUL($array) {
        echo "\n<ul>\n";
        foreach ($array as $key => $value) {
            echo "<li><a href=\"#\">";
            echo $value['name'];
            if (is_array($value))
                $this->buildUL($value['children']);
            echo "</a></li>\n";
        }
        echo "</ul>\n";
    }

问题是我通过

得到多个输出为空,我想避免它们 输出是

<ul> 
<li><a href="#">A
<ul> 
<li><a href="#">C
<ul> 
<li><a href="#">F
<ul> 
<li><a href="#">test
<ul> 
</ul> 
</a></li> 
</ul> 
</a></li> 
</ul> 
</a></li> 
<li><a href="#">B
<ul> 
</ul> 
</a></li> 
</ul> 
</a></li> 
<li><a href="#">1
<ul> 
<li><a href="#">2
<ul> 
</ul> 
</a></li> 
<li><a href="#">3
<ul> 
</ul> 
</a></li> 
</ul> 
</a></li> 
<li><a href="#">99
<ul> 
<li><a href="#">Another Test
<ul> 
</ul> 
</a></li> 
<li><a href="#">2 X
<ul> 
</ul> 
</a></li> 
<li><a href="#">Ham Yum
<ul> 
</ul> 
</a></li> 
<li><a href="#">Be You
<ul> 
</ul> 
</a></li> 
<li><a href="#">1 Z
<ul> 
</ul> 
</a></li> 
</ul> 
</a></li> 
</ul> 

2 个答案:

答案 0 :(得分:0)

我相信你应该检查一下是否设定值[&#39;孩子&#39;]因为我看到上面有一行

echo $value['name'];

$ value应该始终是一个数组,因此您将对每个元素进行递归

尝试使用

if ( isset($value['children'] && is_array($value['children']) )

而不仅仅是(is_array($ value))

答案 1 :(得分:0)

function buildUL($array) {
        echo "\n<ul>\n";
        foreach ($array as $key => $value) {
            echo "<li><a href=\"#\">";
            echo $value['name'];
            echo "</a></li>\n";
            if (!empty($value['children']))
                $this->buildUL($value['children']);
        }
        echo "</ul>\n";
    }

尝试这个...

顺便说一下,<a ...> text <ul><li><a ...> test2 </a></li></ul> </a>

是不合适的