0

親子とその子などを生成しようとしています。サブアイテムを持つ配列は子アイテムを意味します。

$navarray= Array
(
    [0] => Array
        (
            [id] => 3
            [name] => add
            [controller] => ClassYearsSubjectsController
            [action] => getsubjects
            [parent] => 0
            [sub] => Array
                (
                )

        )

    [1] => Array
        (
            [id] => 1
            [name] => occupations
            [controller] => OccupationsController
            [action] => index
            [parent] => 0
            [sub] => Array
                (
                    [0] => Array
                        (
                            [id] => 7
                            [name] => test
                            [controller] => AddressesController
                            [action] => index
                            [parent] => 1
                            [sub] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 8
                                            [name] => testnew
                                            [controller] => AdmissionEnquiriesController
                                            [action] => giveadmissions
                                            [parent] => 7
                                            [sub] => Array
                                                (
                                                )

                                        )

                                )

                        )

                    [1] => Array
                        (
                            [id] => 2
                            [name] => add
                            [controller] => OccupationsController
                            [action] => add
                            [parent] => 1
                            [sub] => Array
                                (
                                )

                        )

                )

        )

)

私はツリーを生成しようとしています。 しかし、私は試しました

<?php echo GenerateNavHTML($navarray);  ?>

および関数GenerateNavHTML

<?php 

function GenerateNavHTML($nav)
{ 

    $html = '';
    foreach($nav as $page)
    {
        $html.='<ul><li>';    

        $html .= '<a href="#">k</a>';
        $html .= GenerateNavHTML($page['sub']);
        $html .= '</li></ul>';
    }
    return $html;
}

   ?>

そして私の出力は

<ul style="display: block;" class="nav">
    <li class="test"><a href="">add</a>
    </li>
</ul><ul style="display: block;" class="nav"><li class="test"><a href="">occupations</a><ul style="display: block;" class="nav"><li class="test"><a href="">test</a><ul style="display: block;" class="nav"><li class="test"><a href="">testnew</a></li></ul></li></ul><ul style="display: block;" class="nav"><li class="test"><a href="">add</a></li></ul></li></ul>

しかし、私はこの出力を期待しています。

<ul style="display: block;" class="nav">
    <li class="test">
    <li class="test">
        <a class="parent" href="#">Shoes</a>
        <ul>
            <li>
                <a class="parent" href="#">Womens</a>
                <ul>
                    <li><a href="#">Sandals</a></li>
                    <li><a href="#">Sneakers</a></li>
                    <li><a href="#">Wedges</a></li>
                    <li><a href="#">Heels</a></li>
                    <li><a href="#">Loafers</a></li>
                    <li><a href="#" class="last" >Flats</a></li>
                </ul>
            </li>
            <li>
                <a class="parent last"  href="#">Mens</a>
                <ul>
                    <li><a href="#">Loafers</a></li>
                    <li><a href="#">Sneakers</a></li>
                    <li><a href="#">Formal</a></li>
                </ul>
            </li>
        </ul>
    </li>
    </ul>
Can anybody tell what logic i need to change
Thanks
4

3 に答える 3

1

これを試して

<?php 

function GenerateNavHTML($nav)
{ 
    if(!empty($nav)) {

          if(isset($nav[0]['parent'])) {
                 $parentid=$nav[0]['parent'];
          }else{
              $parentid=1;
          }
         if($parentid==0) {
             $html = '<ul style="display: block;" class="nav">';
         }else {
             $html='<ul>';
         }
           foreach($nav as $page) {
                $html.='<li>';    
                $html .= '<a href="#">k</a>';
                $html .= GenerateNavHTML($page['sub']);
                $html .= '</li>';
            }
            $html.='</ul>';
            return $html;
     }
}

   ?>
于 2013-04-11T13:15:43.753 に答える
0

この方法を試すことができますか :

function GenerateNavHTML($nav)
{
    if (empty ($nav))
        return;

    $html = '';
    $html.='<ul>';

        foreach($nav as $page)
        {
            $html.='<li>';
                $html .= '<a href="#">'.$page["name"].'</a>';
                $html .= GenerateNavHTML($page['sub']);
            $html .= '</li>';
        }

    $html.='</ul>';

    return $html;
}

for each ループから ul タグを取得します。

于 2013-04-11T12:53:26.127 に答える
0

これを試してください:

<?php 

function GenerateNavHTML($nav)
{ 
    $html = '<ul>';
    foreach ($nav as $page) {
        $html.='<li>';
        $html .= '<a href="#">k</a>';
        $html .= GenerateNavHTML($page['sub']);
        $html .= '</li>';
    }

    $html .= '</ul>';
    return $html;
}
于 2013-04-11T12:31:46.503 に答える