Dovresti aggiungere un controllo per capire se il VALUE del caso e' un valore o ancora Array. Se array richiami la funzione altrimenti setti il valore. Dovrebbe ciclare tutto fino alla fine.