Very confused by PHP's "Assignment Operators"

x+=y is the same as x=x+y??


x*=y is the same as x=x*y??




$X = 1;
$Y = 2;
$A = $X; //a = 1
$A *= $Y; //a = 1 x 2 = 2
$A += $X; //a = 2 + 1 = 3

Basically its a shortcut. $X #= $Y is equivalent to $X = $X # $Y, where # is your given assignment operator, e.g. +, -, /, *.

I believe it came from the increment operator: ++. It simple adds one:

$i = 0;
$i++; //i = 1;
$i++; //i = 2;
$i++; //i = 3;

It’s useful in loops, for example:

for($i = 0; $i < 10; $i++){
    echo $i . '<br />';

Hello Jake,

Thanks for replying, your post seems very comprehensive. However, I am still confused a little bit.

What exactly is +=?

I am learning from w3schools, and they began this subject by telling me right away that n+=m is the same as n=n+m

perhaps it’s a bad resource to learn this particular topic

+= is just an operator meaning ‘increase by’.

Oh, they should say so in the tutorial lol

So n+=m is actually saying "change the value of ‘n’ by adding the value of ‘m’ to it?


$x = 2;
$y = 4;
$x *= $y // this says "change the value of 'x' by multiplying the value of 'y' to it"?

Basically, yes :slight_smile:

Well, thank you sir.

I like your quote btw, “He who asks is a fool for five minutes. But he who doesn’t remains a fool forever.”

Any time :slight_smile:

And the quote, I find it reflects the forums well. Those who ask questions become experts later in life - those who think they understand everything and never ask questions, those people never progress and stay beginners forever.

[ot]> those who think they understand everything and never ask questions, those people never progress and stay beginners forever.

I took a look at the number of questions I’ve asked here… Aww snap. :injured:[/ot]

Something of this sort should be SP’s slogan

Off Topic:

:L Well, it’s the REAL experts - the level above - who google things before asking questions :wink:

However, we have a friendly community with a lot of patience, to help those who come here as a first call of action.

[ot]Everyone has those newcomer questions at one point, even if they didn’t ask them here. Since I learned everything I know about programming from crawling the internets (and untold hours of practice), I find I get most out of forums like these by simply helping others who stumble along the way.

You bring up a valid point about Google, though. The ability to do quality research on my own has been just as valuable as programming.[/ot]

@OP: if you’ve had experience with lower-level programming, it also might be helpful to think of assignment operators as analogous to certain assembly instructions:

; Add 5 to the value stored in the accumulator, then
; store the result back into it.
add eax, 5   ; $foo += 5

; Shift lowest bit off, storing result back into eax
shr eax, 1   ; $foo >>= 1

Remember not to look at assignment expressions like a = a + b algebraically, since “=” doesn’t mean equal to.

PHP is my first programming language. I don’t understand what you are saying (as yet) but it will probably make sense in near future. Thanks for replying in any case :slight_smile: