#42941 [Opn->Csd]: array_slice resets the current array position
| From: | felipe@php.net | Date: | Tue, 19 Feb 2008 01:01:14 +0000 |
| Subject: | #42941 [Opn->Csd]: array_slice resets the current array position | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-122440@lists.php.net to get a copy of this message | ||
ID: 42941
Updated by: felipe@php.net
Reported By: jonas at skubic dot se
-Status: Open
+Status: Closed
Bug Type: Feature/Change Request
Operating System: Linux
PHP Version: 5CVS-2007-10-12 (snap)
Previous Comments:
------------------------------------------------------------------------
[2007-10-13 20:48:03] felipensp at gmail dot com
PHP 5.2.5-dev (cli) (built: Oct 13 2007 17:24:05)
felipe@bl4ck:~/public_html$ php test.php
Array
(
[0] => 2
[1] => 3
[2] => 4
[3] => 5
[4] => 6
[5] => 7
[6] => 8
[7] => 9
)
------------------------------------------------------------------------
[2007-10-12 08:47:31] jonas at skubic dot se
Description:
------------
array_slice seems to be resetting the current array position *before*
processing the offset parameter.
This makes it impossible to directly use expressions that use the array
position for the offset parameter.
It would be mildly useful and less surprising if the parameters were
evaluated before altering the array.
Reproduce code:
---------------
$a = range(0, 9);
next($a);
next($a);
$b = array_slice($a, key($a));
print_r($b);
Expected result:
----------------
Array
(
[0] => 2
[1] => 3
[2] => 4
[3] => 5
[4] => 6
[5] => 7
[6] => 8
[7] => 9
)
Actual result:
--------------
Array
(
[0] => 0
[1] => 1
[2] => 2
[3] => 3
[4] => 4
[5] => 5
[6] => 6
[7] => 7
[8] => 8
[9] => 9
)
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=42941&edit=1