prova a usare global
così

global $out['id'];

cosi puoi richaimare la variabile $out[id] anche fuori dalla funzione e questo che volevi no?
quello che vorrei ottenere è di poter usare il risultato al di fuori della funzione TUTTE LE VOLTE che viene eseguita il return. essendola funzione ricorsiva questo accade n volte ma io da fuori la funzione non riesco a farlo... l'unica forse è di memorizzare tutti i dati in un array e poi scorrerlo una volta terminata la funzione...

bellina è bellina - le funzioni ricorsive hanno un certo fascino - ma a livello di prestazioni e risorse utilizzate è assai problematica, soprattutto se fai una query ad ogni chiamata.
del resto non so come fare diversamente ad ottenere in sequenza l'albero gerarchico della tabella... essendo a livelli non definiti non posso fare altro... o c'è qualche altro modo???

cmq grazie