|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2007-10-02 12:20 UTC] tony2001@php.net
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Mon Oct 27 16:00:01 2025 UTC |
Description: ------------ In this php version the internal array pointer after foreach is not always NULL even after the full cicle is made. Instead it points to the next key after the one which was current when the first change was made to the array we are currently iterating. Reproduce code: --------------- $ar = array('val1', 'val2', 'val3'); var_dump(key($ar)); echo '<br>'; foreach ($ar as $key=>$val) { echo $key.'=>'.$val.'<br>'; } var_dump(key($ar)); echo '-------'; foreach ($ar as $key=>$val) { echo $key.'=>'.$val.'<br>'; $ar[2] = $ar[2]; } var_dump(key($ar)); echo '-------'; foreach ($ar as $key=>$val) { echo $key.'=>'.$val.'<br>'; if ($key==1) $ar[2] = $ar[2]; } var_dump(key($ar)); Expected result: ---------------- int(0) 0=>val1 1=>val2 2=>val3 NULL ------- 0=>val1 1=>val2 2=>val3 NULL ------- 0=>val1 1=>val2 2=>val3 NULL Actual result: -------------- int(0) 0=>val1 1=>val2 2=>val3 NULL ------- 0=>val1 1=>val2 2=>val3 int(1) ------- 0=>val1 1=>val2 2=>val3 int(2)