Статья интересная, но в ней есть момент:
"... foreach увеличивает указатель массива до начала кода пользователя, а не после. Так что, даже если код все еще работает с первым элементом, foreach уже переместил указатель ко второму."
Но так он тоже не обманывается:
$m[]=0;
$m[]=1;
foreach ($m as $key=>$value){
$m[]=$value+2;
};
Раз foreach работает с копией, то буду искать другой способ.
gvg1, скорее всего вы пытаетесь решить проблему не верным инструментом, и если сформулируете изначальную задачу - вам смогут предложить подходящее решение.
Не знаю зачем оно вам надо, но для бесконечного цикла можно использовать while(true) {}
Потому что он не пересчитывает колличество элементов каждый раз. Он посчитал, что в цикле 1 элемент и будет одна итерация. То что ты добавил ещё 1 элемент ничего не меняет