|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #40705 Iterating within function moves original array pointer
Submitted: 2007-03-03 12:31 UTC Modified: 2007-07-24 19:26 UTC
Avg. Score:5.0 ± 0.0
Reproduced:16 of 16 (100.0%)
Same Version:16 (100.0%)
Same OS:4 (25.0%)
From: Assigned: dmitry (profile)
Status: Closed Package: Arrays related
PHP Version: 5.2.1 OS: Irrelevant
Private report: No CVE-ID: None
View Add Comment Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
You can add a comment by following this link or if you reported this bug, you can edit this bug over here.
Block user comment
Status: Assign to:
Bug Type:
New email:
PHP Version: OS:


 [2007-03-03 12:31 UTC]
If an array is passed by value to the function and is iterated over within said function, the "internal pointer" of the original array is moved.

Reproduce code:
function doForeach($array)
    foreach ($array as $k => $v) {
        // do stuff

$foo = array('foo', 'bar', 'baz');



Expected result:
int(0) (returned by versions prior to 5.2.1)

Actual result:
NULL (returned by version 5.2.1 and current 5.2 snapshot)


Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2007-03-06 13:19 UTC]
The same as
 [2007-03-19 19:59 UTC]
Tested this example against the 5.2.1 zipfile from on WinXP and the problem does occur.

Also tested it against the 5.2 snapshot ( from, on WinXP, and the problem seems to still exist.
 [2007-05-03 10:24 UTC] jamesgauth at gmail dot com
This problem occurs in copies of an object's properties too. The array pointer is advanced by foreach in both the original and the copied variable.


class foo {

	var $arr = array(1, 2, 3);
	function test() {
		$array_copy = $this->arr;
		foreach ($array_copy as $val) {}

$a = new foo();

 [2007-07-24 19:26 UTC]
This bug has been fixed in CVS.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
Thank you for the report, and for helping us make PHP better.

PHP Copyright © 2001-2022 The PHP Group
All rights reserved.
Last updated: Wed Oct 05 01:05:53 2022 UTC