Il tuo problema però, se ho ben capito, è che $i potrebbe non cambiare mai e questo rischia di mandarti in loop.

E' su questa eventualità che devi lavorare, poi il ciclo si risolve facilmente.