ID: 16227 Updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] Status: Open Bug Type: Documentation problem Operating System: ANY PHP Version: PHP4 only New Comment:
OK, as a newbie PHP-er (experienced with Perl and Java) the documentation I've been using suggested using that example before foreach(). The foreach() behavior is free from the problem it seems, even though documentation for foreach() on php.net claims that they should be equivalent. Can anyone explain to this newbie why the (while list each) version was the "intended behavior"? Of course, having to use reset() seems kind of odd to me anyway, but I wonder what was "wrong" with my first code... PHP seems to look like it has Perl's "more than one way to do it", but only in very limited areas. (I suppose if push came to shove I could go back to using my own array walkers, but still...) Previous Comments: ------------------------------------------------------------------------ [2002-03-23 07:10:07] [EMAIL PROTECTED] Ok. Then this is documentation problem. (I would like to hear from Andi or Zeev, though) There should be note that internal hash position is reset if value is assigned. (Both LVALUE and RVLAUE. They are the same value anyway.) Also, reference counting side effect should be documented fully. BTW, to fix this misbihavior, we need a additional variable to keep track of hash position for each zval. (and change related codes) PHP3 does not have problem, since it does not have reference counting. ------------------------------------------------------------------------ [2002-03-23 06:46:24] [EMAIL PROTECTED] It's not a flaw, it's designed like this. Derick ------------------------------------------------------------------------ [2002-03-23 06:39:14] [EMAIL PROTECTED] Derick, foreach() does not solve this bug. ZendEngine is resetting internal hash position by an assignment. Therefore, foreach() does does not work. i.e. The issue is _not_ "Not resetting hash posisiton", but "Incorrectly resetting RVALUE hash position by an assignment". This is serious flaw in language. ------------------------------------------------------------------------ [2002-03-23 06:01:49] [EMAIL PROTECTED] Not a bug, but intended behavior. Use foreach(). Derick ------------------------------------------------------------------------ [2002-03-22 20:55:39] [EMAIL PROTECTED] BTW, I haven't check the exact behavior. Zend might be resetting internal hash position due to the assignment. ------------------------------------------------------------------------ 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/16227 -- Edit this bug report at http://bugs.php.net/?id=16227&edit=1