Всегда ли foreach создает копию без ссылки в PHP? - PullRequest
0 голосов
/ 23 октября 2008

Мне интересно, есть ли в PHP встроенная оптимизация. Обычно, когда вы вызываете foreach без ссылки, он копирует переданный массив и работает с ним. Что произойдет, если счетчик ссылок на этот массив будет только 1?

Скажем, например, если getData возвращает некоторый массив данных.

foreach(getData() as $data)
    echo $data;

Поскольку массив, возвращаемый getData (), имеет только одну ссылку, не должен ли он просто использоваться ссылкой и не копироваться первым или php не имеет этой оптимизации?

Это похоже на простую оптимизацию, которая может помочь во многих плохо написанных кодах.

1 Ответ

3 голосов
/ 23 октября 2008

Не могу сказать наверняка, но PHP обычно использует «копирование при записи», поэтому все является справочным, пока вы не попытаетесь записать его, и в это время будет сделана копия, и вы напишите в копию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...