mikele il suo funziona perché lui ha usato correttamente il ciclo foreach.
tu hai usato il ciclo foreach come fosse un while.
il foreach serve a prenderti tutti i valori presenti in un array ($_POST è un array);
il while e il for sono due cicli in cui tu praticamente imposti un contatore (nel tuo caso $i) e il valore per il quale la condizione non è più rispettata, e cioé in cui si deve fermare il codice.