FUDforum
Fast Uncompromising Discussions. FUDforum will get your users talking.

Home » Imported messages » comp.lang.php » simple session question
Show: Today's Messages :: Polls :: Message Navigator
Return to the default flat view Create a new topic Submit Reply
Re: simple session question [message #175731 is a reply to message #175727] Sat, 22 October 2011 21:56 Go to previous messageGo to previous message
The Natural Philosoph is currently offline  The Natural Philosoph
Messages: 993
Registered: September 2010
Karma:
Senior Member
Richard Damon wrote:
> On 10/22/11 9:40 AM, Thomas Mlynarczyk wrote:
>> Jerry Stuckle schrieb:
>> [$foo = $foo++;]
>>>> Is that mentioned somewhere in the manual?
>>> Yes, see how operator precedence works. It is well defined.
>>
>> It is the internal order of execution that confuses me a bit. First, the
>> expression on the right is evaluated, yielding the "not-yet-incremented"
>> value. Then, two things must happen: Incrementing $foo and assigning
>> $foo the value from the first step. The result depends on the order of
>> these two steps. Clearly, the increment should happen before the next
>> read access to $foo. But whether or not it happens before the next write
>> access (assigning $foo the value from the first step) is neither
>> intuitively clear (and optimizers might handle this one way or the
>> other) nor explicitly stated in
>> <http://de3.php.net/manual/en/language.operators.increment.php>. There
>> is only a user comment saying: "The exact moment when post-increment and
>> post-decrement happen is _just immediately after the variable is
>> evaluated_ (not "after the line is processed" or something like that)".
>> If this is meant to be documented behaviour, they should mention it as
>> such in the manual.
>>
>> Greetings,
>> Thomas
>>
>
> I suspect that there is a difference between the execution model of
> C/C++ and PHP here, do in part to the fact that C/C++ is (normally) a
> compiled language with the goal of allowing the compiler to generate as
> efficient of code as possible, while PHP is designed as a interpreted
> language.
>
> in C, x = x++; is undefined behavior, as the timing of when the =
> operator is executed and the writing back of the value of x++ from the
> ++ operator is not specified, depending on when the compiler can most
> efficiently implement it is ok. The code could be converted into the
> equivalent of either.
>

I dont think it is. The value of x is assigned before the increment
operator is applied: that's defined.


> temp = x; /* save original value of x */
> x = x+1 /* perform increment */
> x = temp; /* perform the = */
>
> or
> x = x; /* perform the = */
> x = x+1; /* perform the ++ */
>
> PHP doesn't seem to reserve for itself this ability, and there seems to
> be some comments (which you refer to) asserting that x++ will ALWAY be
> the equivalent of
>
> temp = x;
> x = x+1;
> ... do what ever with temp
>

BUT that doesnt cover the $bar=($foo++);

That should be
INC [foo]
MOV [bar].[foo];

NOT the other way around.

But in php it is.
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: session cookie: client side
Next Topic: by get this format my explode file name like this through php
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ]

Current Time: Thu Nov 28 12:53:08 GMT 2024

Total time taken to generate the page: 0.04968 seconds