Ul için bir multi-level dizi dönüştürmek nasıl?

1 Cevap

Ben şu dizi var.

    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
                (
                )

        )

)

Ve ben php tarafından aşağıdaki HTML bu dönüştürmek istiyorum.

<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>

Ben böyle başladı, ama ben şaşırıp.

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

Herhangi bir yardım takdir edilecektir.

Şimdiden teşekkürler.

1 Cevap

Böyle bir şey?:

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++;
    	}
    }