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: