Re: Whacky increment/assignment logic with $foo++ vs ++$foo
| From: | clancy_1 at cybec dot com dot au | Date: | Tue, 06 Oct 2009 23:20:02 +0000 |
| Subject: | Re: Whacky increment/assignment logic with $foo++ vs ++$foo | ||
| References: | 1 2 3 4 5 6 7 8 9 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-298700@lists.php.net to get a copy of this message | ||
On Tue, 6 Oct 2009 14:08:14 -0400, tedd.sperling@gmail.com (tedd) wrote:
>At 10:48 AM -0300 10/6/09, Martin Scotta wrote:
>>No matter how silly it can looks like (a = a++) it is still completely valid
>>code and it SHOULD run without problems.
>
>Yeah, it's a valid as:
>
> $a = $a;
>
>and does the same thing, which is nothing.
No; it's worse, because it can be interpreted in two different ways, which is demonstrated
by the fact that it gives different results in different languages.
>If you want a statement that does something, then use:
>
> $a = ++$a;
>
>or simply:
>
> $a++;
>
>or
>
> ++$a;
>
>Any of those will increment $a, whereas ($a = $a++;) does nothing.
According to Schlossnagel "Advanced PHP programming" it is better to use ++$a, because
this simply increments the variable, whereas $a++ makes a copy, and then increments the
variable, so it involves additional time and memory usage. I cannot see that it would ever
make a difference in the real world, but this is one of the tricks Schlossnagel advises
you should use when you want the fastest possible code.