2009-12-12 10 views
19

En el siguiente código:¿El uso de una función en el bucle foreach almacena en caché el resultado o llama a la función cada vez?

function a(){ 
    echo 'a'; 
    return array(1,2,3,4); 
} 

foreach(a() as $t){ 
    echo $t;  
} 

podemos ver una() es llamado una sola vez, y parece que se almacena en caché el valor devuelto ...
Pero luego llegué a ver this debate (see comments on the question) me estoy perdiendo algo?

+0

Intenta cambiar eso a 'for ($ a = 0; $ a <= count (a()); $ a ++)' y mira lo que obtienes :) –

Respuesta

24

No, su prueba es concluyente.

No tiene sentido evaluar la primera expresión más de una vez. Es la premisa básica de un ciclo foreach.

Un for loop tiene tres argumentos, y evalúa el segundo y el tercero de cada iteración.

Cuestiones relacionadas