Вопрос

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

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

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

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

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

Это было полезно?

Решение

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top