Bug #70246 [Opn]: ArrayIterator skips next element when current element is unset in foreach.
| From: | arjen at react dot com | Date: | Tue, 18 Aug 2015 11:56:40 +0000 |
| Subject: | Bug #70246 [Opn]: ArrayIterator skips next element when current element is unset in foreach. | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-195283@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=70246&edit=1
ID: 70246
User updated by: arjen at react dot com
Reported by: arjen at react dot com
Summary: ArrayIterator skips next element when current
element is unset in foreach.
Status: Open
Type: Bug
Package: SPL related
Operating System: Linux
PHP Version: 7.0.0beta3
Block user comment: N
Private report: N
New Comment:
Expected and actual result are swapped, my mistake..
Expected result:
--------------
int(1)
int(2)
int(3)
int(4)
int(5)
---------
int(1)
int(3)
int(4)
int(5)
Actual result:
----------------
int(1)
int(2)
int(4)
int(5)
---------
int(1)
int(3)
int(4)
int(5)
Previous Comments:
------------------------------------------------------------------------
[2015-08-12 12:34:15] arjen at react dot com
Description:
------------
ArrayIterator skips next element when current element is unset in foreach.
http://3v4l.org/uUoaH
Test script:
---------------
<?php
$ar = [1,2,3,4,5];
$i = new ArrayIterator($ar);
foreach ($i as $k => $e) {
var_dump($e);
if ($k === 1) {
unset($i[$k]);
}
}
echo '---------' . PHP_EOL;
foreach ($i as $e) {
var_dump($e);
}
Expected result:
----------------
int(1)
int(2)
int(4)
int(5)
---------
int(1)
int(3)
int(4)
int(5)
Actual result:
--------------
int(1)
int(2)
int(3)
int(4)
int(5)
---------
int(1)
int(3)
int(4)
int(5)
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=70246&edit=1