|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2007-11-09 02:51 UTC] bugreporter at to dot mabomuja dot de
[2007-11-09 13:31 UTC] felipensp at gmail dot com
[2007-11-11 18:47 UTC] jani@php.net
[2007-11-12 10:56 UTC] colder@php.net
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Mon Dec 01 23:00:02 2025 UTC |
Description: ------------ In the code example below, when entering the for-loop, the arraypointer is at position 1 (the 2nd element). When you comment out the foreach-loop before OR insert the reset-line, output starts - as expected - at the first array element (posistion 0). This means "foreach" modifies the array pointer, although the documentation says "foreach operates on a copy of the specified array and not the array itself. Therefore, the array pointer is not modified" Testing with versions 4.4.7/5.2.3/5.3dev(2007-11-08-Snap) of Windows zip package and 4.4.7/5.2.1 on gentoo (5.2.3 not testet on linux) shows correct behavior. Reproduce code: --------------- $t=range('a','c'); foreach ($t AS $key => $profil){ $t[$key]="1"; } //reset($t); for ($i=0;$i<sizeof($t);$i++){ echo key($t) . "->".current($t)."\n"; next ($t); } print_r($t); Expected result: ---------------- version 5.2.3: 0->1 1->1 2->1 Array ( [0] => 1 [1] => 1 [2] => 1 ) Actual result: -------------- version 5.2.4: 1->1 2->1 -> Array ( [0] => 1 [1] => 1 [2] => 1 )