¿Hay algún problema, con respecto a la eficiencia, para usar una llamada de función en un bucle foreach. Por ejemplo:Uso de la llamada de función en el bucle foreach
foreach ($this->getValues() as $value) {
//Do something with $value
}
frente
$values = $this->getValues();
foreach ($values as $value) {
//Do something with $value
}
Esencialmente, es php suficientemente inteligente como para llamar a $ this-> getValues () sólo una vez en el primer ejemplo, o se lo llama en cada iteración. Si se lo llama en cada iteración, entonces ¿cómo hacer un seguimiento de qué elemento de su actualidad en,
* todo * lo que hace dentro de un bucle reduce la eficiencia. – goat
Bueno, el único inconveniente con el segundo enfoque es que necesita una variable adicional (que ocupa memoria). Así que iría con el primer enfoque. –
muelles, la "variable extra" no está realmente allí. PHP utiliza copy-on-write, lo que significa que '$ values' y el bucle foreach harán referencia al mismo conjunto de datos. Lo único a considerar es cuando la variable puede ser recogida de basura, que es anterior en el primer ejemplo (al final del ciclo) que en el segundo (al final de la función/archivo o cuando 'unset()' es llamado). –