• Справочник оператора присваивания в PHP =&

    Я имею трудное время определения того, что =& (равно-амперсанд) оператор присваивания делает в PHP. Кто-нибудь может это объяснить? Это он устаревший? Спасибо!

  • Ответы

  • Чтобы ответить на другую часть вопроса Кайла - это не устаревшие и вряд ли будет. Это стандартный способ, например, сделать частью одного массива или зеркального элемента изменения, сделанные в другой.

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

    Единственное, что это устаревшие с =& это "назначение результат new по ссылке" в PHP5, что может быть источником путаницы. new присваивается автоматически по ссылке, так что & избыточна/устаревшие в$o = &new C;, но не в $o = &$c;


    Так как это трудно найти, обратите внимание, что =& (знак равно) это же так = & (равно пространство амперсанд).

    Это иногда пишется с амперсанд перед переменной или объекта, о котором идет речь, например $x = &$y['z'];


    Вот удобная ссылка на подробный раздел о назначить путем ссылки на руководство по PHP. Эта страница является частью серии по ссылкам - стоит потратить минутку, чтобы прочитать всю серию.

    Это 2 разных операторов. = это назначение, как вы, наверное, знаете. и & означает, что переменная должна быть доступна по ссылке а не по значению.

    Чтобы добавить к старой резьбы:

    $x = &$y['z']; также имеет эффект создания $y['z'] если он не существует, и установка его null. Это предотвращает сообщения об ошибках, которые вы, возможно, хотели бы прочитать. Я не нашел документации по этому пока; возможно, нового в 5.3, насколько я знаю.