#6107 [Opn->Csd]: increments are magic, decrements not

From: Date: Sun, 07 Jan 2007 11:16:32 +0000
Subject: #6107 [Opn->Csd]: increments are magic, decrements not
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-107271@lists.php.net to get a copy of this message
ID: 6107 Updated by: bjori@php.net Reported By: waldschrott@php.net -Status: Open +Status: Closed Bug Type: Feature/Change Request PHP Version: 4.3.2 New Comment: This is not going to change, ever, and is documented behavior. Previous Comments: ------------------------------------------------------------------------ [2003-04-21 20:52:03] philip@php.net Making this as a feature request again. ------------------------------------------------------------------------ [2003-04-21 17:34:20] alindeman@php.net I added a note and example in the docs. Status -> Closed (wow, this is an old bug :) ------------------------------------------------------------------------ [2003-04-21 17:19:49] pollita@php.net After some quick research it looks like what you describe is expected behavior and therefore should be documented, but not changed (at least not without some discussion on php.internals or zend.engine2). In Zend/zend_operators.c: ------------------------- ZEND_API int increment_function(zval *op1) { . . . case IS_STRING: /* Perl style string increment */ increment_string(op1); . . . } ZEND_API int decrement_function(zval *op1) { . . . case IS_STRING: /* Like perl we only support string increment */ /* Try to work with string as a number or leave it alone */ . . . } The increment_string() function works from right to left, incrementing any character in the range [A-Za-z0-9], if the character is Z, z, or 9, it will roll over to A, a, or 0 respectively and 'carry-over' to the next alphanumeric. Incrementing continues until no carry-over is encountered. Personally, it seems to me that there should be a decrement_string() equivalent, but this is a messy thing to do with strings anyway. ------------------------------------------------------------------------ [2000-08-11 09:08:30] waldschrott@php.net perhaps it´s more than I thought, try this: echo $n='–Œ'; echo ++$n; echo ++$n; what happens? nothing. If someone´s going to review that magical mechanism, he/she should document it OR improve it ------------------------------------------------------------------------ [2000-08-11 08:09:06] waldschrott@php.net depending on POV it could be a feature request too... ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/6107 -- Edit this bug report at http://bugs.php.net/?id=6107&edit=1

« previous php.bugs (#107271) next »