Foreach prováděj jen na array:
function makeList($array){
if (is_array($array)) {
$output = '<ul>';
foreach ($array as $key => $subArray){
$output .= '<li><a href="'.$subArray["url"].'">'.$subArray["name"].'</a>';
$output .= makeList($subArray);
$output .= '</li>';
}
$output .= '</ul>';
}
else $output = '';
return $output;
}