fondamentalmente non c'è modo di tappare i buchi se non copiando su una nuovo array...

ma in fn dei conti il problema è un altro:

vuoi tappare i buchi per poterci ciclare con un for?

in quel caso bada bene che esiste un foreach...

se il motivo è un altro.. spiega... ci sarà un'altra soluzione.. nella mia esperienza non ho mai dovuto "tappare i buchi" in un array