如何将多级数组转换为ul?

时间:2009-12-10 21:32:32

标签: php

我有以下数组。

    Array
(
    [24] => Array
        (
            [id] => 24
            [name] => Main menu
            [shortdesc] => mainmenu
            [status] => active
            [parentid] => 0
            [order] => 0
            [children] => Array
                (
                    [65] => Array
                        (
                            [id] => 65
                            [name] => Main 4
                            [shortdesc] => 
                            [status] => active
                            [parentid] => 24
                            [order] => 0
                            [children] => Array
                                (
                                )

                        )

                    [64] => Array
                        (
                            [id] => 64
                            [name] => Main 3
                            [shortdesc] => 
                            [status] => active
                            [parentid] => 24
                            [order] => 0
                            [children] => Array
                                (
                                )

                        )

                   ...
                   ...

                    [59] => Array
                        (
                            [id] => 59
                            [name] => Main 1
                            [shortdesc] => 
                            [status] => active
                            [parentid] => 24
                            [order] => 0
                            [children] => Array
                                (
                                    [66] => Array
                                        (
                                            [id] => 66
                                            [name] => Main 1-1
                                            [shortdesc] => 
                                            [status] => active
                                            [parentid] => 59
                                            [order] => 0
                                            [children] => Array
                                                (
                                                )

                                        )

                                )

                        )

                )

        )

    [25] => Array
        (
            [id] => 25
            [name] => Galleri 1
            [shortdesc] => galleri1
            [status] => active
            [parentid] => 0
            [order] => 0
            [children] => Array
                (
                )

        )

)

我想通过php将其转换为以下HTML。

<ul>
   <li>Main menu
        <ul>
            <li>Main 4</li>
            <li>Main 3</li>
            ...
            <li>Main 1
                <ul>
                    <li>Main 1-1</li>
                </ul>
            </li>
        </ul>
   </li>
   <li>Galleri 1</li>

</ul>

我是这样开始的,但我被卡住了。

if (count($navlist)){
  echo "\n<ul>";
  foreach ($navlist as $key => $list){
...
...

2 个答案:

答案 0 :(得分:4)

这样的东西?:

function recursion($multi_dimensional_array)
    {
        $m = $multi_dimensional_array;

        $keys = array();
        foreach($m as $key=>$value)
        {
            $keys[] = $key;
        }

        $i = 0;
        while($i < count($multi_dimensional_array))
        {
            echo '<li><a href="#">'.$keys[$i].'</a>';
            if(is_array($multi_dimensional_array[$keys[$i]]))
            {
                echo '<ul>';
                recursion($multi_dimensional_array[$keys[$i]]);
                echo '</ul>';
            }
            echo '</li>';
            $i++;
        }
    }

答案 1 :(得分:1)

function arrayToUL(array $array)
{
    echo '<ul>';
    foreach ($array as $key => $value)
    {
        if (isset($value['name'])) echo "<li>{$value['name']}</li>";
        if (!empty($value['children']) && is_array($value['children']))
        {
            echo arrayToUL($value['children']);
        }
    }
    echo '</ul>';
}