dovresti poter fare tutto con una query.

codice:
$query = "insert into comuni_ (comune,provincia,cap,regione)
         select comuni.comune, province.provincia, comuni.cap, regioni.regione
         from regioni
         inner join province ON regioni.codice = province.regione
         inner join comuni ON comuni.provincia = province.sigla
         order by regione, provincia, comune
         ";
devi solo verificare la relazione tra le tabelle che ho presunto dal tuo post ma in realta' non conosco. Se da errore nell'order by aggiungi la tabella al campo. es: regioni.regione