Decirte que esto puede simplificarse:
    
así:    
Con eso ya conseguís un "array autoincrementable". 
En cuanto a evitar los vacíos, a mi me gusta hacer esto:    
Con esa sentencia se saltean los items vacios en el bucle. O el problema no era saltearlos sino saber por qué existen?