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