Edit report at https://bugs.php.net/bug.php?id=15520&edit=1
ID: 15520 Updated by: datib...@php.net Reported by: david at acz dot org Summary: array_slice destroys numeric keys -Status: Open +Status: Closed Type: Feature/Change Request -Package: Feature/Change Request +Package: *General Issues Operating System: Linux PHP Version: 4.3.0-dev -Assigned To: +Assigned To: datibbaw Block user comment: N Private report: N New Comment: This bug has been fixed in SVN. Snapshots of the sources are packaged every three hours; this change will be in the next snapshot. You can grab the snapshot at http://snaps.php.net/. For Windows: http://windows.php.net/snapshots/ Thank you for the report, and for helping us make PHP better. Fixed in 5.0.2 with the introduction of the fourth 'preserve_keys' parameter. <?php $a = array("7" => "foo", "f" => "bar", "13" => "blah"); print_r(array_slice($a, 0, count($a), true)); ?> Array ( [7] => foo [f] => bar [13] => blah ) Previous Comments: ------------------------------------------------------------------------ [2002-07-03 21:16:38] e...@php.net Got me convinced: re-categorizing, -versioning, etc. ------------------------------------------------------------------------ [2002-07-03 20:29:07] david at acz dot org This is a bug. Or at least, it is a very serious documentation problem. The function is taking the slices correctly. But it is destroying numeric keys, and leaving non-numeric keys alone. Why does it arbitrarily change keys that happen to be numeric? Array keys are not based on numbers, so array_slice should not be concerned with their actual value, especially if it is using the actual element positions to calculate the slice. ------------------------------------------------------------------------ [2002-07-03 20:06:40] e...@php.net Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php >From the manual-page: Note that array_slice() will ignore array keys, and will calculate offsets and lengths based on the actual positions of elements within the array. ------------------------------------------------------------------------ [2002-02-12 08:59:34] david at acz dot org The array_slice function destroys keys that are numeric (even if used as strings), but not string keys. This is a serious bug, which makes the function unusable. I had to write my own function to correctly take the slice of an array. If this is indeed intended behavior, then it should be noted as such in the manual, and a new function added to take array slices that does not destroy numeric keys. <? $a = array("7" => "foo", "f" => "bar", "13" => "blah"); print_r($a); print_r(array_slice($a, 0)); ?> Array ( [7] => foo [f] => bar [13] => blah ) Array ( [0] => foo [f] => bar [1] => blah ) ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=15520&edit=1