Использование вызова функции в цикле foreach

Существуют ли какие-либо проблемы с точки зрения эффективности использования вызова функции в цикле foreach. Например:

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

против

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

По сути, он достаточно умен, чтобы вызывать $ this-> gt; getValues () только один раз в первом примере, или он вызывает его на каждой итерации. Если он вызывает его на каждой итерации, то как он отслеживает, в каком элементе он находится в данный момент,

Ответы на вопрос(2)

Ваш ответ на вопрос