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 #175727 is a reply to message #175709] Sat, 22 October 2011 21:19 Go to previous messageGo to previous message
Richard Damon is currently offline  Richard Damon
Messages: 58
Registered: August 2011
Karma:
Member
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.

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

Which being an interpreted language makes some sense, why put off doing
something, and recording somewhere that you need to do it, when you can
do it now, the possible savings that C might have been able to make, get
swamped by the other overhead in PHP.

One thing is that we have a "formal spec" for the C language, created
and distributed by an international standard organization (ISO). is
there an equivalent of this for PHP, or do we only really have a single
implementation of PHP (in various versions), with "documentation" for
its behavior.
[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:55:56 GMT 2024

Total time taken to generate the page: 0.04482 seconds