|
|
Базовый оператор присвоения обозначается как
=. На первый взгляд может показаться,
что это оператор "равно". На самом деле это не так. В действительности,
оператор присвоения означает, что левый операнд получает значение
правого выражения, (т.е. устанавливается результирующим значением).
Результатом выполнения оператора присвоения является само присвоенное значение.
Таким образом, результат выполнения $a = 3 будет равен
3. Это позволяет использовать конструкции вида:
В дополнение к базовому оператору присвоения имеются "комбинированные операторы" для
всех бинарных арифметических и строковых операций, которые позволяют
использовать некоторое значение в выражении, а затем установить его как
результат данного выражения. Например:
Обратите внимание, что присвоение копирует оригинальную переменную в новую
(присвоение по значению), таким образом все последующие изменения
одной из переменных на другой никак не отражаются. Начиная с PHP 4, также поддерживается
присваивание по ссылке, используя синтаксис $var =
&$othervar;, но в PHP 3 такая возможность отсутствует.
'Присвоение по ссылке' означает, что обе переменные указывают на
одни и те же данные и никакого копирования не происходит.
Для получения более полной информации об этой возможности, обратитесь к разделу
документации Подробно об указателях.
add a note
User Contributed Notes
Оператор присвоения
Hayley Watson
07-Oct-2007 03:22
bradlis7 at bradlis7 dot com's description is a bit confusing. Here it is rephrased.
<?php
$a = 'a';
$b = 'b';
$a .= $b .= "foo";
echo $a,"\n",$b;?>
outputs
abfoo
bfoo
Because the assignment operators are right-associative and evaluate to the result of the assignment
<?php
$a .= $b .= "foo";
?>
is equivalent to
<?php
$a .= ($b .= "foo");
?>
and therefore
<?php
$b .= "foo";
$a .= $b;
?>
adam at gmail dot com
25-Aug-2006 10:38
or you could use the xor-assignment operator..
$a ^= $b;
$b ^= $a;
$a ^= $b;
bradlis7 at bradlis7 dot com
15-Aug-2005 08:13
Note whenever you do this
<?php
$a .= $b .= "bla bla";
?>
it comes out to be the same as the following:
<?php
$a .= $b."bla bla";
$b .= "bla bla";
?>
So $a actually becomes $a and the final $b string. I'm sure it's the same with numerical assignments (+=, *=...).
|