il fatto è che a tutti i livelli di nidificazione la funzione ricorsiva deve vedere l'array per aggiungere i propri valori... indi per cui alla funzione ricorsiva l'array va passato.
Se vuoi evitare di doverglielo passare alla prima invocazione, puoi usare una funzione intermedia che lo faccia per te.
Codice PHP:
function tree_ric ($pid, $level, &$pippo) {
...
}
function tree ($pid, $level) {
$pippo = array ();
tree_ric ($pid, $level, $pippo);
return $pippo;
}
tree ('', 0)
dove tree_ric è la funzione che tu hai chiamato tree.