Re: $i++ problem understanding
Available news archives: comp.lang.tcl - comp.lang.python - comp.security.firewalls - sci.crypt - comp.lang.php - comp.lang.javascript
Google
 
Web news.hping.org


comp.lang.php archive

Re: $i++ problem understanding

From: Oli Filth <catch@olifilth.co.uk>
Date: Wed Oct 05 2005 - 15:11:24 CEST

Zilla said the following on 05/10/2005 13:39:
> Pugi! wrote:
> [snip]
>
>> But much harder to accept is and I fail to see the logic in it,
>> is the following :
>> $i = 1;
>> print($i++);
>> This will print 1 and only afterward will the value of $i be increased
>> by 1. It is between (), so logic tells me first $i++ and then print.
>
> [snip]
>
> print is a language construct, not actually a function. That means that
> the parentheses are optional. So the following two lines produces the
> same result:
>
> print "Hello World";
> print("Hello World");
>
> So in your example the parentheses don't have a meaning in the
> mathematical sense of doing whats inside them first, which in php only
> works when you are calculating something as in:
>
> $number = (3 + 5) * 7;
>
> where $number is 56 (8 * 7). That is why $i in your example is still
> post-incremented, that is, after you have printed it.

The fact that print is a language construct (and therefore parantheses
are optional) is irrelevant. e.g.:

        function foo($v)
        {
                echo $v;
        }

        $a = 5;
        foo($a++);

Post-increment is always evaluated last.

-- 
Oli
Received on Tue Oct 18 02:32:12 2005