Обойти массив можно и посредством других функций, в том числе current() и next(). Но лучше их избегать, во-первых, потому что они вносят путаницу, а во-вторых, потому что они уже устарели. Кроме того, существует ряд стандартных функций, обеспечивающих обработку массивов достаточно элегантным способом, например array_walk().