Please don't close assigned bugs, I was working on this.
On 30 Nov 2002 [EMAIL PROTECTED] wrote: > ID: 8353 > Updated by: [EMAIL PROTECTED] > Reported By: [EMAIL PROTECTED] > -Status: Open > +Status: Closed > Bug Type: Documentation problem > PHP Version: 4.4.0-dev > Assigned To: philip > New Comment: > > This bug has been fixed in CVS. > > In case this was a PHP problem, snapshots of the sources are packaged > every three hours; this change will be in the next snapshot. You can > grab the snapshot at http://snaps.php.net/. > > In case this was a documentation problem, the fix will show up soon at > http://www.php.net/manual/. > > In case this was a PHP.net website problem, the change will show > up on the PHP.net site and on the mirror sites in short time. > > Thank you for the report, and for helping us make PHP better. > > Modified Note re: "Works on a Copy" > > > Previous Comments: > ------------------------------------------------------------------------ > > [2002-11-28 11:42:45] [EMAIL PROTECTED] > > The foreach() page will be updated and made more clear on this > behavior. Regarding the pointer, foreach() indeed behaves like > while/each() (except for the initial reset) and moves the pointer past > the end. So although it provides a copy to work with it still affects > the original arrays pointer! > > ------------------------------------------------------------------------ > > [2002-11-27 10:32:33] [EMAIL PROTECTED] > > As I've been taught, foreach doesn't affect the pointer as it merely > works on a copy. Also, the following note exists in the foreach() > entry of the manual and has for over two years: > > Note: Also note that foreach operates on a copy of the specified > array, not the array itself, therefore the array pointer is not > modified as with the each() construct and changes to the array element > returned are not reflected in the original array. > > That was added by Sterling here: > > >http://cvs.php.net/diff.php/phpdoc/en/language/control-structures.xml?login=2&r1=1.9&r2=1.10&ty=h > > Everyone assumes foreach works on a copy and only a copy. IMHO each() > isn't a fair comparison because it doesn't work on a copy. > > ------------------------------------------------------------------------ > > [2002-11-24 23:10:40] [EMAIL PROTECTED] > > IMO this is not a bug. Foreach works virtually like while + each > combination, with a few exceptions such as not requiring a reset() > prior to execution since it does not care about the current position in > the array. > As far as current(), next() and simular are concerned, > while (each($arr)); == foreach ($arr as $v);, once the loops are > complete current() will return FALSE. This IMO is a consistent > behaviour and is definately not a bug. I believe this is merely a > documentation issue. > > ------------------------------------------------------------------------ > > [2002-11-21 15:21:34] [EMAIL PROTECTED] > > foreach essentially REMOVES the array pointer alltogether on the > original array. > > $arr = array('a','b'); foreach ($arr as $v); var_dump( current($arr) > ); > $arr = array('a','b'); foreach ($arr as $v); reset($arr); var_dump( > current($arr) ); > > Results: > bool(false) > string(1) "a" > > Using key() instead of current() results in NULL instead of false. > Where did the pointer go? > > Conclusion: > Either foreach() has a feature that removes the array pointer from the > original array or it's a bug. If it's seen as a feature please explain > why so it can be documented. > > ------------------------------------------------------------------------ > > [2001-03-09 21:32:57] [EMAIL PROTECTED] > > no feedback. > > > ------------------------------------------------------------------------ > > The remainder of the comments for this report are too long. To view > the rest of the comments, please view the bug report online at > http://bugs.php.net/8353 > > -- > Edit this bug report at http://bugs.php.net/?id=8353&edit=1 > > > -- > PHP Documentation Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > -- PHP Documentation Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php