Foreach crée-t-il toujours une copie sur une référence none en PHP?
-
04-07-2019 - |
Question
Je me demande si cette optimisation est intégrée à PHP. Normalement, lorsque vous appelez foreach sans utiliser de référence, il copie le tableau transmis et le traite. Que se passe-t-il si le nombre de références à ce tableau est égal à 1?
Dites par exemple si getData renvoie un tableau de données.
foreach(getData() as $data)
echo $data;
Puisque le tableau retourné par getData () n'a qu'une seule référence, il ne devrait pas simplement être utilisé par référence et ne pas être copié en premier, ou php n'a-t-il pas cette optimisation?
Cela semble être une simple optimisation qui pourrait aider beaucoup de code mal écrit.
La solution
Je ne peux pas dire avec certitude, mais PHP utilise normalement "copie à l'écriture", donc tout est une référence jusqu'à ce que vous essayiez de l'écrire, une copie est alors faite et vous écrivez sur la copie.