rfc:normalize_inc_dec
PHP RFC: Normalize increment and decrement operators
- Version: 0.2
- Date: 2013-12-19
- Author: Tjerk Meesters (datibbaw)
- Status: Inactive
- First Published at: https://wiki.php.net/rfc/normalize_inc_dec
Introduction
The current behaviour of increment and decrement operators is not very intuitive:
// booleans $a = false; ++$a; // bool(false) $a = true; --$a; // bool(true) // null values $a = null; --$a; // null $a = null; ++$a; // int(1) // empty strings $a = ''; ++$a; // string(1) "1" // non-numeric strings $a = '12d9'; ++$a; // string(4) "12e0" ++$a; // float(13)
Proposal
The proposal is:
- always treat boolean and null types as an integer, but raise a warning.
- deprecate alphanumeric increment and introduce
str_inc()
andstr_dec()
.
Operation on bool / null
// booleans $a = false; ++$a; // int(1) + warning ++$a; // int(2) $a = true; --$a; // int(0) + warning --$a; // int(-1) // null values $a = null; --$a; // int(-1) + warning $a = null; ++$a; // int(1) + warning
Operation on alphanumeric strings
// non-numeric strings $a = '12d9'; ++$a; // string(4) "12e0" + Notice: String increment is deprecated, use str_inc() instead in php shell code on line 1 ++$a; // float(13)
Additionally, it makes two new string functions available:
str_inc($str)
- to perform the current string increments.str_dec($str)
- the string decrement.
Backward Incompatible Changes
Incrementing null
will now raise a warning; incrementing alphanumeric strings will raise a deprecation notice.
Proposed PHP Version(s)
PHP 7
Open Issues
None.
Unaffected PHP Functionality
The changes do not affect the following data types:
array
int
float
object
resource
Proposed Voting Choices
Yay or nay.
Patches and Tests
Coming soon ...
Implementation
N/A
References
Rejected Features
Keep this updated with features that were discussed on the mail lists.
rfc/normalize_inc_dec.txt · Last modified: 2018/06/18 10:17 by cmb