ok l'ho testata. Penso ti convenga fare una funzione da te perchè quella restituisce errore quando nella directory $main_dir ci sono sia cartelle sia documenti.
Esso (come puoi leggere dal sito) lavora bene per progetti piccoli.
Infatti legge solo la directory da te indirizzata e le subcartelle dirette. Intendo dire che se nella directory $main_dir ci sono 2 cartelle [ciao1 e ciao2] e esse contengono altre cartelle esse vengono lette come dato semplice senza essere aperte e esplorate.
Si fermerà dunque a leggere a: $main_dir\ciao1 e $main_dir\ciao2.
Se vuoi continuare a leggere basta inserire un altro foreach. Ma credo ci siano metodi migliori, per esempio un ciclo.