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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top