簡體   English   中英

多維數組顯示為下拉菜單

[英]Multidimension array displayed as dropdown menu

我想將我的數組顯示為菜單。 當數組在一個維度時很容易 - 我可以很容易地使用for循環來生成一個。 但是現在我的菜單數組看起來像這樣:

$menu = array("item1", "item2", "item3" => array("subitem1", "subitem2", "subitem3"), "item4", "item5", "item6"); // hope it's defined coreectly

因此,如果主數組$菜單中有一個元素,如item1或item5,我想將其顯示為普通元素

  • 標簽,但如果其中一個元素得到像item3那樣的內部元素,我想將它顯示為

     <li>item3 <ul> <li>subitem1</li> <li>subitem2</li> <li>subitem3</li> </ul> </li> 

    我想我需要在for循環中使用for循環,但可能有一種更簡單的方法。

    問候,並提前感謝馬特

    你可以使用遞歸,這將有額外的好處,能夠遍歷無限級別的子菜單:

    function renderList($array) {
        echo "<ul>";
        foreach ($array as $key => $item)) {
            echo "<li>";
            if (is_array($item) {
                echo $key;
                renderList($item);
            } else {
                echo $item;
            }
            echo "</li>";
        }
        echo "</ul>";
    }
    
    $menu = array("item1", "item2", "item3" => array("subitem1", "subitem2", "subitem3"), "item4", "item5", "item6");
    renderList($menu);
    

    這是一個小提琴: http//phpfiddle.org/main/code/2p8-erq

    你應該使用嵌套函數。

    代碼更新

    這是一個小提琴: http//phpfiddle.org/main/code/tac-3jh

    <?php
    $menu = array("item1", "item2", "item3" => array("subitem1", "subitem2", "subitem3"), "item4", "item5", "item6");
    
    function arr2ul($arr){
        $ret='';
        if (is_array($arr)){
        $ret='<ul>';
            foreach($arr as $key=>$val){
                if(is_array($val)){
                    $ret.='<li>'.$key;
                    $ret.=arr2ul($val);
                    $ret.='</li>';
                }else{
                    $ret.='<li>'.$val.'</li>';
                }
            }
            $ret.='</ul>';
        }
        return $ret;
    }
    
    $result=arr2ul($menu);// contains the html output and you
    // can echo it where you want
    
    echo $result;
    ?>
    

    輸出:(像這樣)

    <ul>
        <li>item1</li>
        <li>item2
            <ul>
                <li>sub item<li>
            </ul>
        </li>
    
    </ul>
    

    嘗試這個

    <?php
    $menu = array("item1", "item2", "item3" => array("subitem1", "subitem2", "subitem3"), "item4", "item5", "item6"); // hope it's defined coreectly
    setfunction($menu);
    function setfunction($menu){
    
    echo "<ul>";
    foreach ($menu as $key => $item) {
            echo "<li>";
            if(is_array($item))
            {
                echo $key;
                setfunction($item);
            } 
            else 
            {
                echo $item;
            }
            echo "</li>";
        }
    echo "</ul>";
    }
    
    ?>
    

    產量

    item1
    item2
    item3
        subitem1
        subitem2
        subitem3
    item4
    item5
    item6
    

    暫無
    暫無

    聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

     
    粵ICP備18138465號  © 2020-2024 STACKOOM.COM