rfc:negative_array_index

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
rfc:negative_array_index [2017/06/06 17:49]
pmmaga Started voting phase
rfc:negative_array_index [2018/03/16 17:45] (current)
pmmaga Closed vote
Line 1: Line 1:
 ====== PHP RFC: Arrays starting with a negative index ====== ====== PHP RFC: Arrays starting with a negative index ======
-  * Version: 0.2+  * Version: 0.4
   * Date: 2017-04-20   * Date: 2017-04-20
-  * Author: Pedro Magalhães, ​mail at pmmaga ​dot net +  * Author: Pedro Magalhães, pmmaga@php.net 
-  * Status: ​Voting+  * Status: ​Accepted
   * First Published at: http://​wiki.php.net/​rfc/​negative_array_index   * First Published at: http://​wiki.php.net/​rfc/​negative_array_index
  
Line 16: Line 16:
  
 This RFC proposes to eliminate the parenthesis part of that sentence. Which is an exception to a rule, that people have to learn one way or the other. This RFC proposes to eliminate the parenthesis part of that sentence. Which is an exception to a rule, that people have to learn one way or the other.
 +
 +This proposal targets 8.0. However, to ease the transition and find places where this may become an issue, there is a secondary vote for emitting a deprecation notice in cases where the behavior will change.
  
 All the variables in this code: All the variables in this code:
Line 43: Line 45:
 } }
 </​code>​ </​code>​
 +
 +<​blockquote>​
 +NOTE: If accepted, during the deprecation phase the following ''​E_DEPRECATED''​ notice would be emitted in cases where the behavior will change:
 +
 +<​code>​
 +Deprecated: In the next major version of PHP the implicit keys of this array will start from -1 instead of 0 in ...
 +</​code>​
 +</​blockquote>​
  
 With the implementation of this RFC, they will all result in: With the implementation of this RFC, they will all result in:
Line 63: Line 73:
 <?php <?php
  
-$a[-2] = true; +$a[-2] = true; // Current: Key is -2, RFC: Key is -2 
-$a[] = true; +$a[] = true; // Current: Key is 0, RFC: Key is -1 
-$a[] = true;+$a[] = true; // Current: Key is 1, RFC: Key is 0
  
 if ($a[1] === true) { if ($a[1] === true) {
-    echo 'Save the world.';+    echo 'Accessing key 1 explicitly';
 } }
 </​code>​ </​code>​
  
-Will no longer ​save the world.+Will no longer ​output ''​Accessing key 1 explicitly''​. 
 + 
 +<​blockquote>​ 
 +NOTE: If accepted, during the deprecation phase the ''​E_DEPRECATED''​ notice mentioned in the previous section would be emitted. 
 +</​blockquote>​
  
 ===== Proposed PHP Version(s) ===== ===== Proposed PHP Version(s) =====
-PHP 7.2+PHP 8.0 
 +(Deprecation notice for 7.3)
  
 ===== Unaffected PHP Functionality ===== ===== Unaffected PHP Functionality =====
-Arrays with explicit keys, string keys, or an initial numeric index ''>​= ​0''​ are not affected. This also means that arrays that never use explicit keys will still start with ''​0''​.+Arrays with explicit keys, string keys, or an initial numeric index ''>​= ​-1''​ are not affected. This also means that arrays that never use explicit keys will still start with ''​0''​.
  
 Furthermore,​ iterating over arrays without explicit keys (ie. ''​foreach''​) is not affected. Furthermore,​ iterating over arrays without explicit keys (ie. ''​foreach''​) is not affected.
  
 ===== Voting Choices ===== ===== Voting Choices =====
-This RFC requires ​a 2/3 majority.+Both votes require ​a 2/3 majority.
  
-Voting opened on 6/6/2017 18:00 UTC and will close on 20/6/2017 18:00 UTC.+<doodle title="​Arrays starting with a negative index for 8.0" auth="​pmmaga"​ voteType="​single"​ closed="​true">​ 
 +   * Yes 
 +   * No 
 +</doodle>​ 
 + 
 +----
  
-<doodle title="​Arrays starting with a negative index" auth="​pmmaga"​ voteType="​single"​ closed="​false">+<doodle title="​Deprecation notice for 7.3" auth="​pmmaga"​ voteType="​single"​ closed="​true">
    * Yes    * Yes
    * No    * No
 </​doodle>​ </​doodle>​
 +
 +<​blockquote>​The previous vote targeting 7.2 was closed with 14 for and 16 against</​blockquote>​
  
 ===== Patches and Tests ===== ===== Patches and Tests =====
Line 98: Line 120:
  
 ===== References ===== ===== References =====
-Discussion on the mailing list:​https://​externals.io/​thread/712+Version 0.3: 
 + 
 +Discussion on the mailing list: https://​externals.io/​message/98302 
 + 
 +First proposal Voting period discussion: https://​externals.io/​message/​99412 
 + 
 +Second proposal Voting period discussion: https://​externals.io/​message/​99511 
 + 
 +---- 
 +Version 0.4:
  
 +Discussion on the mailing list: https://​externals.io/​message/​101861
rfc/negative_array_index.1496771357.txt.gz · Last modified: 2017/09/22 13:28 (external edit)