animuson
animuson

Reputation: 54797

What do the '&=' and '=&' operators do?

Finding the answer to this is turning out to be much more difficult than I would have thought. Since I don't have a clue what you'd call this, it's hard to run a Google search since it will ignore those characters.

I tried browsing the PHP Assignment Operators page, and even the other operators pages, and found nothing that told me exactly what they do. I don't just want to guess based on the single function I have that uses it. So what exactly do the '&=' and '=&' operators do?

All I know is it sets a variable, which would be the '=' part, so I really need to know what the '&' part is doing.

Please don't say the obvious; I need someone to explain exactly what they do. I know one of them is 'bitwise', but that doesn't mean anything to me.

Upvotes: 19

Views: 5226

Answers (5)

Renhard Silalahi
Renhard Silalahi

Reputation: 1

"=&" means input a value, that the content will adapt with the previous variable the example

the output is = satu satu

Upvotes: 0

sleepynate
sleepynate

Reputation: 8036

&=

is the bitwise "AND" assignment operator. It performs an "AND" on the variable and stores the result. (more information is in Bitwise Operators and more general information is in Bitwise Operations in C ).

The

=&

operator is an assignment by reference, which makes the variable point not to the value of the other variable or constant, but rather to that memory location (more information is in What References Are).

Upvotes: 2

Felix Kling
Felix Kling

Reputation: 817238

=& is assigning by reference.

It assigns a variable not by value but by reference.

Example:

$a = 'foo';
$b =& $a;

$b = 'bar';

echo $a;

prints bar because $b has a reference to $a and therefore changing $b also changes the value of $a.


&= is bitwise AND.

Example:

$a = 4 // binary representation: 100
$b = 1 // binary representation: 001

Then $a &= $b is just short for $a = $a & $b and means: Take every bit and perform the AND operation, that is:

0 & 1 = 0
1 & 0 = 0
1 & 1 = 1
0 & 0 = 0

Therefore

     1 0 0 
AND  0 0 1
     -----
     0 0 0

=> $a = 0 // bit representation 0 ;)

Upvotes: 10

Gordon
Gordon

Reputation: 317217

=& assigns by reference

$a = 1;
$b =& $a;
$a++;
echo $b; // 2

From PHP Manual on References:

References in PHP are a means to access the same variable content by different names.


&= is a bitwise AND assignment

$a = 1;
$a &= 1; // is the same as
$a = $a & 1;
echo $a; // 1

From Wikipedia on Bitwise AND:

A bitwise AND takes two binary representations of equal length and performs the logical AND operation on each pair of corresponding bits. In each pair, the result is 1 if the first bit is 1 AND the second bit is 1. Otherwise, the result is 0. For example:

    0101
AND 0011
  = 0001

EDIT: For a practical example on bitwise operations, see my answer to Bitwise Operations in PHP

Upvotes: 36

Dolph
Dolph

Reputation: 50720

'&=' and '=&' are very different operators.

'&=' is a bitwise assignment operator:

$var = false;
$var &= foo(); // will call foo()
$var = false & foo(); // will call foo()
$var = $var && foo(); // will not call foo()

'=&' returns a reference:

$a = $b; //$a points to $b
$a =& $b; //$a does NOT point to $b... both point to the same thing.

Upvotes: 1

Related Questions