Usando a chamada de função no loop foreach

Há algum problema, no que diz respeito à eficiência, para usar uma chamada de função em um loop foreach. Por exemplo:

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

versus

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

Essencialmente, é o php inteligente o suficiente para chamar $ this-> getValues ​​() somente uma vez no primeiro exemplo, ou ele o chama em cada iteração. Se ele chama em cada iteração, como ele monitora em qual elemento está atualmente,

questionAnswers(2)

yourAnswerToTheQuestion