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

Reply via email to