Usando la llamada a la función en el bucle foreach

¿Hay algún problema, con respecto a la eficiencia, para usar una llamada de función en un bucle foreach. Por ejemplo:

foreach ($this->getValues() as $value) {
  //Do something with $value
}

versus

$values = $this->getValues();
foreach ($values as $value) {
  //Do something with $value
}

Esencialmente, php es lo suficientemente inteligente como para llamar $ this-> getValues ​​() solo una vez en el primer ejemplo, o lo llama en cada iteración. Si lo llama en cada iteración, entonces, ¿cómo hace un seguimiento de en qué elemento se encuentra actualmente?

Respuestas a la pregunta(2)

Su respuesta a la pregunta