Ho notato problemi nel tornare indietro da un livello n ad un livello molto meno profondo es.: 1,
infatti il salto di livello non avviene, e torna indietro solo di un bnomio UL LI


quindi ho inserito una ripetizione della chiusura del binomio[/list]tante volte quanto è la differenza del salto di livello:
Codice PHP:
$rows ns_build_three(1);
$livello = -1;
foreach (
$rows as $row) {
    if (
$livello $row[0]) {
         echo 
"<ul>\n";
    } elseif (
$livello $row[0]) {

    
//calcolo il salto di livello e ripeto[/list]
        
$rpt_ul=($livello-$row[0]);

         echo 
"- differenza livello {$rpt_ul}"; echo str_repeat('[/list]',$rpt_ul)."\n";
    } elseif (
$livello == $row[0]) {
         echo 
"\n";
    } 
  
//debug {$row[2]}
  
echo "<li id=\"{$row[2]}\">".$row[1]." ".$row[0] ;
    
$livello $row[0]; // imposto il vecchio livello per sapere come devo salire o scendere nell'albero
}
echo 
"";
while (
$livello 0) { // scendo i livelli della lista fino a chiuderla
     
echo "[/list]\n";
     
$livello $livello 1;
}
echo 
"[/list]"