rfc:negative_array_index

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
rfc:negative_array_index [2017/06/06 17:49] – Started voting phase pmmagarfc:negative_array_index [2020/08/01 23:40] (current) – RFC was implemented in both PHP 7.4 and PHP 8.0 carusogabriel
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: Implemented
   * 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)