Bez záruky, v PHP nedělám.
function makeList($array, $prevKey = null){
      if (is_array($array)) {
        $pridej_ul=false;
        foreach ($array as $key => $subArray){
          $url = $prevKey.$key;
          if (isset($subArray["url"])) {
             $pridej_ul=true;
             $output .= '<li>';
             $output .= '<a href="'.$url.'">'.$subArray["name"].'</a>';
             $output .= makeList($subArray);
             $output .= '</li>';
          }
          else $output .= makeList($subArray, $url."/");
        }
        if ($pridej_ul) $output = '<ul>'.$output.'</ul>';
      }
      else $output = ''; 
      return $output;
}