quindi hai già una funzione che fa la lista di link

ipotizzo:

la lista
Codice PHP:
<ul>
  <
li>Link 1</li>
  <
li>Link 2
    
<ul>
      <
li>Sublink A</li>
      <
li>Sublink B</li>
    </
ul>
  </
li>
  <
li>Link 3
    
<ul>
      <
li>Sublink C</li>
    </
ul>
  </
li>
</
ul
l'array dovrebbe essere cosi
Codice PHP:
$menu = array( 
 
=> array( 'link'=>'Link 1' ),
 
=> array( 
  
'link'=>'Link 2',
  
'sub'=>array( 
    
=> array( 'link'=>'Sublink A' ),
    
=> array( 'link'=>'Sublink B' )
  )
 
=> array( 
  
'link' => 'Link 3',
  
'sub' => array(
    
=> array( 'link'=>'Sublink C' )
  )
); 
poi
Codice PHP:
function makeList( array $data ) {
  
$str '<ul>';
  foreach ( 
$data AS $v ) {
    
$sub '';
    if ( isset( 
$v['sub'] ) ) {
      
$sub makeList$v['sub'] );
    }
    
$str .= '<li>' $v['link'] . $sub '</li>';
  }
  
$str .= '</ul>';
  return 
$str;

l'ho fatto al volo quindi non so se funziona ma la logica è questa.. dovresti cambiare l'array a monte.