Что делает =&в 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, насколько я знаю.