array_pop() moves current element pointer since 4.3.0
| Doc Bug #21998 | array_pop() moves current element pointer since 4.3.0 | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Submitted: | 2003-02-01 13:42 UTC | Modified: | 2003-02-05 03:10 UTC |
|
||||||||||
| From: | php at alterego dot dp dot ua | Assigned: | ||||||||||||
| Status: | Closed | Package: | Documentation problem | |||||||||||
| PHP Version: | 4.3.0 | OS: | all | |||||||||||
| Private report: | No | CVE-ID: | None | |||||||||||
[2003-02-01 13:42 UTC] php at alterego dot dp dot ua
<?
$a = array("a", "b", "c");
each($a);
array_pop($a);
var_dump(each($a));
?>
This prints "bool(false)" in 4.3.0 (current element pointer points somewhere out of the array) and var_dump($a[0]) in 4.2.3 (array is reset after array_pop).
I had to add many additional reset()'s after installing 4.3.0.
How array_pop() (and may be others) affects current element pointer is not documented, so this behavior is not a bug. The only purpose of writing all this is that I want to know how array_pop() will work in future PHP releases.
Patches
Pull Requests
History
AllCommentsChangesGit/SVN commits
[2003-02-01 15:08 UTC] magnus@php.net
[2003-02-03 00:39 UTC] sniper@php.net
[2003-02-03 10:51 UTC] sniper@php.net
[2003-02-03 11:02 UTC] sniper@php.net
[2003-02-05 03:10 UTC] php at alterego dot dp dot ua
[2004-01-30 02:12 UTC] nilsen at softease dot no
I just upgraded a machine here from 4.1.2 (redhat default installation) to 4.3.4. while (count($tree) > 1){ $tree[count($tree) - 2]["SELECTED"]["Children"] = $tree[count($tree) - 1]; array_pop($tree); } The above doesn't work after upgrading. We had to change it to this: while (count($tree) > 1){ $tree[count($tree) - 2]["SELECTED"]["Children"] = $tree[count($tree) - 1]; $tree = array_slice($tree,0,count($tree) - 1); } Wasn't this bug sorted out? Thanks.