Mümkün olduğunca fonksiyonlar içerisinde echo, print gibi çıktı veren komutları kullanmayın. Satır sayısı arttıkça kontrol daha kolay kaybedilir, debug yapmak zorlaşır.
Kodu şu şekilde düzenledim:
<?php
function footer_menu_walk($list=[],$children=false,$opt=[]){
$string = (!$children ? '<div class="col">' : '') . PHP_EOL;
$string .= '<ul>'.PHP_EOL;
foreach ($list AS $menu){
$string .= '<li>'.PHP_EOL;
$string .= $menu['title'] . PHP_EOL;
if($menu['children'])
$string .= footer_menu_walk($menu['children'], true);
$string .= '</li>' . PHP_EOL;
}
$string .= '</ul>' . PHP_EOL;
$string .= (!$children ? '</div>' : '') . PHP_EOL;
return $string;
}
$footer_menus = [
[
'title' => 'Test 1', 'children'=> [['title'=>'Children 1', 'children'=>[]], ['title'=>'Children 2', 'children'=>[]]],
],
[
'title' => 'Test 2', 'children'=> [],
],
[
'title' => 'Test 3', 'children'=> [],
]
];
echo footer_menu_walk($footer_menus, false);Output şu şekilde:
<div class="col">
<ul>
<li>Test 1
<ul>
<li>Children 1</li>
<li>Children 2</li>
</ul>
</li>
<li>Test 2</li>
<li>Test 3</li>
</ul>
</div>Ekran çıktısı ise: