rfc:normalize_inc_dec
This is an old revision of the document!
PHP RFC: Normalize increment and decrement operators
- Version: 0.1
- Date: 2013-12-19
- Author: Tjerk Meesters (datibbaw@php.net)
- Status: Draft
- 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 following behaviour is proposed:
// booleans $a = false; ++$a; // bool(true) $a = true; --$a; // bool(false) // null values $a = null; --$a; // null $a = null; ++$a; // null // empty strings $a = ''; ++$a; // int(1) // 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
Null no longer increments to 1. Booleans couldn't be incremented in the first place, so there should be no breaks.
Proposed PHP Version(s)
Next 5.x
Introduce a notice for the current string increment use case. This will help developers spot their usage more easily.
Next major
Removal of string increment using ++ and --.
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.1390873218.txt.gz · Last modified: 2017/09/22 13:28 (external edit)