Я совсем не против форича и он действительно удобен во многих ситуациях. Но также надо понимать и правильно использовать все обилие языка.
Посмотри - сколько функций для работы с массивами
На практике часто народ юзает метод array_map для перебора массива без его изменения только потому, что он выглядит красивее форыча.
Второй кейс, собственно, с изменением массива.
В обоих случаях луяше использовать форыч т.к. он быстрее обрабатывается. Когда-то проверял на 100к и 1м записях.