Во-первых: Средствами foreach массивы обходятся, а не формируются. Можно, конечно внутри цикла проводить манипуляции с элементами массива, но результат может быть не предсказуем.
Во-вторых: Если вы хотите сформировать циклом такой массив, то нужно обходить один массив и формировать другой.
В-третьих: Пользуясь "во-вторых" придётся манипулировать с внутренним указателем массива ( в частности функцией
next()) раз вы задаёте подобные вопросы. то вы стопудово накосячите там и запутаетесь. Лучше используйте for.
В-четвертых: Причём тут ООП? :)