Это не имеет ничего общего с тем, чтобы быть быстрее или эффективнее.
PHP реализует копирование при записи, поэтому переменная может ссылаться на ту же область памяти до тех пор, пока вы не измените ее значение. Затем, когда вы изменяете переменную, PHP решает, создавать ли копию или нет, в зависимости от того, обращаетесь ли вы к ней по значению или по ссылке.
Доступ по значению - при изменении переменной создается копия:
$a = array("abc");
foreach ($a as $element) {
$element = "def";
}
print_r($a);
Array
(
[0] => abc
)
Доступ по ссылке - изменения в переменной влияют на исходную копию:
foreach ($a as &$element) {
$element = "def";
}
print_r($a);
Array
(
[0] => def
)
Обратите внимание, что все объекты в PHP 5 доступны по ссылке без с использованием оператора &
.
Это хорошая причина для использования объектов!
Будьте очень осторожны при использовании ссылок в PHP, потому что они могут иметь запутывающий эффект.
Обязательно прочитайте этот блог: Не используйте ссылки на PHP от разработчика ядра PHP Йоханнеса Шлютера