Blade_Storm,
foreach es eficiente, porque ni comprueba que el índice exista, ni calcula el largo: lo que hace es mover el puntero interno del vector.
Lo "malo" es que estás obligado a generar una variable para cada paso.
Pero bueno, podés saber de forma relativamente sencilla cuál es más rápido: en tu programa poné algo como
Código PHP:
$i = 0;
$tiempo_inicio = microtime();
while (++i < 1000) {
// código de cada opción
}
echo "la opción X demoró ", (microtime() - $tiempo_inicio), "milisegundos.";
Lo de las mil veces es para obtener un "promedio". Luego podés dividir el resultado entre mil, si te parece más útil.
Saludos.