Search code examples
phpvariablesoperators

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.


Solution

  • =& 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