Задачи бывают разные, php язык общего назначения, поэтому в нем есть разный функционал. Но вы можете направить обращение в PHP, чтобы выпилили все "лишние" функции, т.к. лично вы не применяете ничего сложнее пагинации.
А я где-то написал, что итератор не перебирает значения?
Foreach ограничен, о чем говорит его название "для всех", нужно что-то иное, он уже не подходит.
У вас большой массив, скажем 1 000 000 значений, вам нужно поменять значения с 800 000 по 900 000, вы установите указатель на 800 000 и пройдете 100 000 значений, или будете проходить 900 000 значений? А если вам нужен перебор в обратном порядке?
$iterator = array_reverse(iterator_to_array($iterator));
о чем говорит его название "для всех", нужно что-то иное, он уже не подходит.
нужно перебрать массив начиная с какого-то значения, то foreachа чем конструкция if (условие) continue не устраивает внутри foreach? Foreach при любом раскладе удобнее чем процедурные функции, которые ИМХО рудимент без полезной нагрузки.
И кстати ты так и не ответил про числовые индексы, получаются они работают только с ассоциативными массивами?