Bug #12193 Updated: nested loops using each don't work
| From: | zeev@php.net | Date: | Mon, 16 Jul 2001 20:50:54 +0000 |
| Subject: | Bug #12193 Updated: nested loops using each don't work | ||
| References: | 1 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-60122@lists.php.net to get a copy of this message | ||
ID: 12193
Updated by: zeev
Reported By: adresse@brutele.be
Old Status: Open
Status: Closed
Bug Type: Arrays related
Operating System: windows
PHP Version: 4.0.6
New Comment:
list() = each() is not a loop. each() is a simple function, that returns a key,value pair, and
advances the internal array pointer to the next pair. It has no idea it's being used inside a
loop, and thus, nothing makes this internal pointer go back to the beginning of the array when the
loop ends.
Solutions:
- Use foreach()
or
- Call reset() on the array at the end of the loop.
Previous Comments:
------------------------------------------------------------------------
[2001-07-16 16:27:46] adresse@brutele.be
when tho loops using each are nested, the outer while loop stops after the first iteration.
For instance, the output of the following script :
$outer=array("o1", "o2");
$inner=array("i1","i2");
while (list($o_index, $o) = each($outer))
while (list($i_index, $i) = each($inner))
echo $o, $i, "<br>";
is
o1i1
o1i2
instead of
o1i1
o1i2
o2i1
o2i2
------------------------------------------------------------------------
Edit this bug report at http://bugs.php.net/?id=12193&edit=1