Today during a session i had a strange "magic" feature found in php.
<?php
$a = 10;
echo ++$a + $a++;
?>
this works perfect as expected. it returns 22.
but if i assign $a as a ref. to another variable it will be return 23.
<?
$a = 10;
$b = &$a;
echo ++$a + $a++;
?>
this will gave me to 23
(used the $b to the pre post stuff)
<?
$a = 10;
$b = &$a;
echo ++$b + $b++;
?>
this just happens if i have a ref. count to my var. WHY? :)
http://en.wikipedia.org/wiki/23_%28film%29
--
Marco Kaiser
Marco Kaiser wrote:
Today during a session i had a strange "magic" feature found in php.
<?php
$a = 10;
echo ++$a + $a++;
?>
there is a very simple rule that PHP inherited from C:
never use pre- and postfix increment operators in the same expression
as the results are undefined
--
Hartmut Holzgraefe, Senior Support Engineer .
MySQL AB, www.mysql.com
Hello Marco,
though Hartmut is perfectly correct in his statement here's what happens:
$a = 10; // 10
++$a // 11
$a + $a // 22
$a++ // 23
Thursday, January 19, 2006, 5:41:17 PM, you wrote:
Today during a session i had a strange "magic" feature found in php.
<?php
$a = 10;
echo ++$a + $a++;
?>>
just to verfiy echo $a after your echo line, it will show 12
this works perfect as expected. it returns 22.
but if i assign $a as a ref. to another variable it will be return 23.
<?
$a = 10;
$b = &$a;
echo ++$a + $a++;
?>>
this will gave me to 23
(used the $b to the pre post stuff)
<?
$a = 10;
$b = &$a;
echo ++$b + $b++;
?>>
this just happens if i have a ref. count to my var. WHY? :)
--
Marco Kaiser
Best regards,
Marcus
Hmm yes i know this,
but its very interesting for me to see how php internaly handles ++$a with a
pointer.
Now i understand it :)
-- Marco
2006/1/19, Marcus Boerger helly@php.net:
Hello Marco,
though Hartmut is perfectly correct in his statement here's what
happens:$a = 10; // 10
++$a // 11
$a + $a // 22
$a++ // 23Thursday, January 19, 2006, 5:41:17 PM, you wrote:
Today during a session i had a strange "magic" feature found in php.
<?php
$a = 10;
echo ++$a + $a++;
?>>just to verfiy echo $a after your echo line, it will show 12
this works perfect as expected. it returns 22.
but if i assign $a as a ref. to another variable it will be return 23.<?
$a = 10;
$b = &$a;
echo ++$a + $a++;
?>>this will gave me to 23
(used the $b to the pre post stuff)<?
$a = 10;
$b = &$a;
echo ++$b + $b++;
?>>this just happens if i have a ref. count to my var. WHY? :)
--
Marco KaiserBest regards,
Marcus
--
Marco Kaiser
For the 2nd time: references ARE NOT POINTERS! :-p
--Jani
Hmm yes i know this,
but its very interesting for me to see how php internaly handles ++$a with a
pointer.
Now i understand it :)-- Marco
2006/1/19, Marcus Boerger helly@php.net:
Hello Marco,
though Hartmut is perfectly correct in his statement here's what
happens:$a = 10; // 10
++$a // 11
$a + $a // 22
$a++ // 23Thursday, January 19, 2006, 5:41:17 PM, you wrote:
Today during a session i had a strange "magic" feature found in php.
<?php
$a = 10;
echo ++$a + $a++;
?>>just to verfiy echo $a after your echo line, it will show 12
this works perfect as expected. it returns 22.
but if i assign $a as a ref. to another variable it will be return 23.<?
$a = 10;
$b = &$a;
echo ++$a + $a++;
?>>this will gave me to 23
(used the $b to the pre post stuff)<?
$a = 10;
$b = &$a;
echo ++$b + $b++;
?>>this just happens if i have a ref. count to my var. WHY? :)
--
Marco KaiserBest regards,
Marcus--
Marco Kaiser
--
Give me your money at @ http://pecl.php.net/wishlist.php/sniper
Donating money may make me happier and friendlier for a limited period!
Death to all 4 letter abbreviations starting with P!
Sorry Jani,
i mean a reference (alias) :)
-- Marco
2006/1/19, Jani Taskinen sniper@iki.fi:
For the 2nd time: references ARE NOT POINTERS! :-p --Jani
Hmm yes i know this,
but its very interesting for me to see how php internaly handles ++$a
with a
pointer.
Now i understand it :)-- Marco
2006/1/19, Marcus Boerger helly@php.net:
Hello Marco,
though Hartmut is perfectly correct in his statement here's what
happens:$a = 10; // 10
++$a // 11
$a + $a // 22
$a++ // 23Thursday, January 19, 2006, 5:41:17 PM, you wrote:
Today during a session i had a strange "magic" feature found in php.
<?php
$a = 10;
echo ++$a + $a++;
?>>just to verfiy echo $a after your echo line, it will show 12
this works perfect as expected. it returns 22.
but if i assign $a as a ref. to another variable it will be return 23.<?
$a = 10;
$b = &$a;
echo ++$a + $a++;
?>>this will gave me to 23
(used the $b to the pre post stuff)<?
$a = 10;
$b = &$a;
echo ++$b + $b++;
?>>this just happens if i have a ref. count to my var. WHY? :)
--
Marco KaiserBest regards,
Marcus--
Marco Kaiser--
Give me your money at @ http://pecl.php.net/wishlist.php/sniper
Donating money may make me happier and friendlier for a limited period!
Death to all 4 letter abbreviations starting with P!
--
Marco Kaiser
Today during a session i had a strange "magic" feature found in php.
<?php
$a = 10;
echo ++$a + $a++;
?>this works perfect as expected. it returns 22.
Odd, I expected 21:
echo (11 + 10)
a = a + 1
--
Jon Dowland
http://alcopop.org/
Jon Dowland wrote:
Today during a session i had a strange "magic" feature found in php.
<?php
$a = 10;
echo ++$a + $a++;
?>this works perfect as expected. it returns 22.
Odd, I expected 21:
echo (11 + 10)
a = a + 1
nope - discounting the 'undefined behavior' of using pre/post increment
operators, 22 would be the correct assumption - remember, broken into
seperate statements, it's effectively:
$a = 10;
$a = $a + 1; // $a == 11
$a + $a; // $a == 22
echo $a;
$a = $a + 1; // $a == 23
Cheers,
--
Carl
Guys, please take this offlist. Undefined means undefined. There's no
assumed way of it working.
Andi
At 07:14 AM 1/20/2006, Carl P. Corliss wrote:
Jon Dowland wrote:
Today during a session i had a strange "magic" feature found in php.
<?php
$a = 10;
echo ++$a + $a++;
?>this works perfect as expected. it returns 22.
Odd, I expected 21:
echo (11 + 10)
a = a + 1nope - discounting the 'undefined behavior' of using pre/post
increment operators, 22 would be the correct assumption - remember,
broken into seperate statements, it's effectively:$a = 10;
$a = $a + 1; // $a == 11
$a + $a; // $a == 22echo $a;
$a = $a + 1; // $a == 23
Cheers,
--
Carl