Что делает =&
в PHP оператор присваивания (равно амперсанду)?
Это устарело?
Что делает =&
в PHP оператор присваивания (равно амперсанду)?
Это устарело?
Ответы:
Это не устарело и вряд ли станет устаревшим. Это стандартный способ, например, внести в один массив или объект зеркальные изменения, внесенные в другой, вместо копирования существующих данных.
Это называется присвоением по ссылке , что, если цитировать руководство, «означает, что обе переменные в конечном итоге указывают на одни и те же данные, и ничего никуда не копируется» .
Единственное , что является устаревшим с =&
является «присвоение результата в new
виде ссылки» в PHP 5 , который может быть источником путаницы. new
автоматически назначается по ссылке, поэтому &
является избыточным / устаревшим в $o = &new C;
, но не в $o = &$c;
.
Поскольку поиск затруднен, обратите внимание, что =&
( равно амперсанду ) то же самое, что = &
( равно пробелу амперсанду ), и часто записывается таким образом, что оно переходит в другую переменную, например $x = &$y['z'];
или $x = &$someVar
( имя переменной со знаком доллара с амперсандом ). Пример упрощен из документации:
$a = 3;
$b = &$a;
$a = 4;
print "$b"; // prints 4
Вот удобная ссылка на подробный раздел « Назначение по ссылке» в руководстве по PHP . Эта страница является частью серии ссылок - стоит потратить минуту, чтобы прочитать всю серию.
Это два разных оператора. =
это назначение, как вы, наверное, знаете. И &
означает, что к переменной следует обращаться по ссылке, а не по значению.
$x = &$y['z'];
также имеет эффект создания, $y['z']
если он не существует, и установки для него значения null
.
Это предотвращает сообщения об ошибках, которые вы могли бы захотеть прочитать. Я еще не нашел документации по этому поводу; возможно, новое в версии 5.3, насколько я знаю.