Что делает '& =' и '= и' операторы делают?

Нахождение ответа на это оказывается намного более трудным, чем я думал бы. Так как у меня нет подсказки, что Вы назвали бы этим, трудно запустить поиск Google, так как это проигнорирует те символы.

Я попытался просмотреть страницу PHP Assignment Operators и даже другие страницы операторов, и не нашел ничего, что сказало мне точно, что они делают. Я только хочу предположить на основе единственной функции, которую я имею, который использует ее. Таким образом, что точно делает '& =' и '= и' операторы делают?

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

Не говорите очевидное; мне нужен кто-то для объяснения точно, что они делают. Я знаю, что один из них является 'поразрядным', но это ничего не значит для меня.

20
задан Peter Mortensen 6 December 2015 в 09:42
поделиться

4 ответа

=& присваивает по ссылке

$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

36
ответ дан 29 November 2019 в 23:19
поделиться

= & - это присвоение по ссылке .

Он присваивает переменную не по значению, а по ссылке.

Пример:

$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 ;)
10
ответ дан 29 November 2019 в 23:19
поделиться
&=

является побитовым оператором присваивания «И». Он выполняет операцию «И» над переменной и сохраняет результат. (дополнительная информация находится в Побитовые операторы , а более общая информация - в Побитовые операции в C ).

Оператор

=&

- это присваивание по ссылке, которое заставляет переменную указывать не на значение другой переменной или константы, а на эту ячейку памяти (более подробная информация содержится в What References Are ).

2
ответ дан 29 November 2019 в 23:19
поделиться

'&=' и '=&' - очень разные операторы.

'&=' - это побитовый оператор присваивания:

$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.
1
ответ дан 29 November 2019 в 23:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: