Нахождение ответа на это оказывается намного более трудным, чем я думал бы. Так как у меня нет подсказки, что Вы назвали бы этим, трудно запустить поиск Google, так как это проигнорирует те символы.
Я попытался просмотреть страницу PHP Assignment Operators и даже другие страницы операторов, и не нашел ничего, что сказало мне точно, что они делают. Я только хочу предположить на основе единственной функции, которую я имею, который использует ее. Таким образом, что точно делает '& =' и '= и' операторы делают?
Все, что я знаю, является этим, устанавливает переменную, которая была бы '=' часть, таким образом, я действительно должен знать то, что делает '&' часть.
Не говорите очевидное; мне нужен кто-то для объяснения точно, что они делают. Я знаю, что один из них является 'поразрядным', но это ничего не значит для меня.
$a = 1;
$b =& $a;
$a++;
echo $b; // 2
Из руководства PHP по ссылкам:
Ссылки в PHP - это средство доступа к одному и тому же содержимому переменной под разными именами.
&=
- это побитовое И присваивание
$a = 1;
$a &= 1; // is the same as
$a = $a & 1;
echo $a; // 1
Побитовое И берет два двоичных представления одинаковой длины и выполняет логическую операцию И над каждой парой соответствующих битов. В каждой паре результат равен 1, если первый бит равен 1 И второй бит равен 1. В противном случае результат равен 0. Например:
0101
AND 0011
= 0001
EDIT: Для практического примера побитовых операций смотрите мой ответ на Побитовые операции в PHP
= &
- это присвоение по ссылке .
Он присваивает переменную не по значению, а по ссылке.
Пример:
$a = 'foo';
$b =& $a;
$b = 'bar';
echo $a;
печатает bar
, потому что $ b
имеет ссылку на $ a
, и поэтому изменение $ b
также меняет значение $ a
.
& =
равно побитовое И
.
Пример:
$a = 4 // binary representation: 100
$b = 1 // binary representation: 001
Тогда $ a & = $ b
- это просто сокращение от $ a = $ a & $ b
и означает: взять каждый бит и выполнить И
операция , то есть:
0 & 1 = 0
1 & 0 = 0
1 & 1 = 1
0 & 0 = 0
Следовательно,
1 0 0
AND 0 0 1
-----
0 0 0
=> $a = 0 // bit representation 0 ;)
&=
является побитовым оператором присваивания «И». Он выполняет операцию «И» над переменной и сохраняет результат. (дополнительная информация находится в Побитовые операторы , а более общая информация - в Побитовые операции в C ).
Оператор
=&
- это присваивание по ссылке, которое заставляет переменную указывать не на значение другой переменной или константы, а на эту ячейку памяти (более подробная информация содержится в What References Are ).
'&=' и '=&' - очень разные операторы.
'&=' - это побитовый оператор присваивания:
$var = false;
$var &= foo(); // will call foo()
$var = false & foo(); // will call foo()
$var = $var && foo(); // will not call foo()
'=&' возвращает ссылку:
$a = $b; //$a points to $b
$a =& $b; //$a does NOT point to $b... both point to the same thing.