Оператор присваивания
Базовый оператор присваивания обозначается как "=". На первый взгляд
может показаться, что это оператор "равно". На самом деле это не так.
В действительности оператор присваивания означает, что левый операнд
получает значение правого выражения, (то есть устанавливается значением).
Результатом выполнения оператора присваивания является само присвоенное значение.
Таким образом, результат выполнения "$a = 3
" будет равен
3. Это позволяет делать трюки наподобие:
В дополнение к базовому оператору присваивания имеются "комбинированные операторы"
для всех бинарных арифметических операций,
операций объединения массивов и строковых операций, которые позволяют
использовать некоторое значение в выражении, а затем установить его как
результат данного выражения. Например:
Обратите внимание, что присвоение копирует оригинальную переменную в новую
(присвоение по значению), таким образом все последующие изменения
одной из переменных никак не отразятся на другой. Это также следует учитывать,
если вам надо скопировать что-то типа большого массива в длинном цикле.
Исключением из обычного для PHP способа присваивания по значению являются объекты
(object), которые присваиваются по ссылке.
Принудительно скопировать объекты по значению можно с помощью
специального ключевого слова clone.
Присваивание по ссылке
Присваивание по ссылке также поддерживается, для него используется синтаксис
$var = &$othervar;.
Присваивание по ссылке означает, что обе переменные указывают на
одни и те же данные и никакого копирования не происходит.
Пример #1 Присваивание по ссылке
<?php
$a = 3;
$b = &$a; // $b - это ссылка на $a
print "$a\n"; // печатает 3
print "$b\n"; // печатает 3
$a = 4; // меняем $a
print "$a\n"; // печатает 4
print "$b\n"; // также печатает 4, так как $b является ссылкой на $a,
// а значение переменной $a успело измениться
?>
Оператор new
автоматически возвращает ссылку, поэтому присвоение результата операции
new по ссылке является ошибкой.
Для получения более полной информации о ссылках и их возможностях обратитесь к
разделу Подробно о ссылках.
Операторы арифметического присваивания
Операторы побитового присваивания
Другие операторы присваивания