ID: 20548 Comment by: lew at mailduct dot com Reported By: prgallier at yahoo dot com Status: Wont fix Bug Type: Scripting Engine problem Operating System: Linux 2.4 PHP Version: 4.3.2-dev New Comment:
PHP 4.3.3 on FreeBSD 4.8-RELEASE: <?php // Increment some blank/empty variables... $pos++; $pos++; $pos++; $neg--; $neg--; $neg--; // Show them to us now... print( "pos = $pos\n" ); print( "neg = $neg\n" ); // Now do it another way (forced typecast)... $ppp += 1; $ppp += 1; $ppp += 1; $nnn -= 1; $nnn -= 1; $nnn -= 1; // Show them to us now... print( "ppp = $ppp\n" ); print( "nnn = $nnn\n" ); # # Expected: # pos = 3 ppp = 3 # neg = -3 nnn = -3 # # Actual: # pos = 3 ppp = 3 # neg = nnn = -3 ?> Previous Comments: ------------------------------------------------------------------------ [2003-09-27 14:36:59] lew at mailduct dot com This is a GROSS inconsistency in how the increment/decrement operators work, and one that coders are likely to stumble upon the hard way. Please study the effect of fixing this, at the expense of breaking a long-time quirk in BC. Breaking a quirk, and documenting it on the BC page, is better than maintaining a GROSS inconsistency in one of the basic language construct operators! Please fix this! ------------------------------------------------------------------------ [2003-08-03 12:57:49] [EMAIL PROTECTED] This is a valid bug, however a fix would be a BC break that would result in a beahviour change that was in place since 3.0 days. ------------------------------------------------------------------------ [2003-02-14 17:14:59] bulletbait at yahoo dot com I just stumbled across this bug recently with an older version (4.1.1) of PHP on Win32 -- verified that it still exists in 4.3.0. This one had me going in circles trying to debug. Work-arounds: $score[$num] -= 1; or $score[$num] = $score[$num] - 1; ------------------------------------------------------------------------ [2002-11-21 12:42:11] prgallier at yahoo dot com The following: $score[$num]--; does not affect $score[$num] if $score[$num] is uninitiated. Using $score[$num]++ does work, however. This is inconsistent. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=20548&edit=1
