1.2.758. Negative Start Index In Array¶
Negative starting index in arrays changed in PHP 8.0. Until then, they were ignored, and automatic index started always at 0. Since PHP 8.0, the next index is calculated.
The behavior will break code that relies on automatic index in arrays, when a negative index is used for a starter.
<?php
$x = [-5 => 2];
$x[] = 3;
print_r($x);
/*
PHP 7.4 and older
Array
(
[-5] => 2
[0] => 3
)
*/
/*
PHP 8.0 and more recent
Array
(
[-5] => 2
[-4] => 3
)
*/
?>
See also PHP RFC: Arrays starting with a negative index.
1.2.758.1. Connex PHP features¶
1.2.758.1.1. Suggestions¶
Explicitly create the index, instead of using the automatic indexing
Add an explicit index of 0 in the initial array, to set the automatic process in the right track
Avoid using specified index in array, conjointly with automatic indexing.
1.2.758.1.2. Specs¶
Short name |
Arrays/NegativeStart |
Rulesets |
|
Exakat since |
2.1.9 |
PHP Version |
With PHP 8.0 and older |
Severity |
Minor |
Time To Fix |
Quick (30 mins) |
Changed Behavior |
PHP 8.0 |
Precision |
Very high |
Available in |