note 104720 added to class.iterator
| From: | geompse at gmail dot com | Date: | Sun, 03 Jul 2011 13:43:24 +0000 |
| Subject: | note 104720 added to class.iterator | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-181205@lists.php.net to get a copy of this message | ||
Be carefull with Iterator when using nested loops or deleting items inside the collection while
looping over it.
It can be tricky to detect.
This unexpected behavior is pertinent if you think about it long enough.
<?php
foreach($it as $key => $value)
echo $value;
#output: value1, value2, value3
foreach($it as $key => $value)
foreach($it as $key => $value)
echo $value;
#output: value1, value2, value3
foreach($it as $key => $value)
foreach(clone $it as $key => $value)
echo $value;
#output: value1, value2, value3, value1, value2, value3, value1, value2, value3
foreach($it as $key => $value)
{
echo $value;
array_shift($it->values);
}
#ouput: value1, value3
?>
----
Server IP: 89.31.146.176
Probable Submitter: 82.227.124.74
----
Manual Page -- http://www.php.net/manual/en/class.iterator.php
Edit -- https://master.php.net/note/edit/104720
Del: integrated -- https://master.php.net/note/delete/104720/integrated
Del: useless -- https://master.php.net/note/delete/104720/useless
Del: bad code -- https://master.php.net/note/delete/104720/bad+code
Del: spam -- https://master.php.net/note/delete/104720/spam
Del: non-english -- https://master.php.net/note/delete/104720/non-english
Del: in docs -- https://master.php.net/note/delete/104720/in+docs
Del: other reasons-- https://master.php.net/note/delete/104720
Reject -- https://master.php.net/note/reject/104720
Search -- https://master.php.net/manage/user-notes.php