Re: Re: Possible foreach bug; seeking advice to isolate the problem
| From: | Jonathan Sachs | Date: | Sat, 23 Oct 2010 14:48:56 +0000 |
| Subject: | Re: Re: Possible foreach bug; seeking advice to isolate the problem | ||
| References: | 1 2 3 4 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-309040@lists.php.net to get a copy of this message | ||
On Sat, 23 Oct 2010 08:34:27 +0200, peter.e.lind@gmail.com (Peter
Lind) wrote:
>It is not a bug - somewhere before the foreach loop you've got, a
>variable is being referenced, and that's throwing things off.
>Otherwise, unsetting the variable would have no effect on the problem
>you're seeing.
Could you please be more specific? "Somewhere... a variable is being
referenced" doesn't give me any insight into what is happening.
It's absolutely clear to me WHERE the problem is. The first foreach
loop is causing the problem; I can prove this by removing it. But WHAT
the problem is, is absolutely unclear. I've studied this code every
which way, and I don't see how the first foreach loop can possibly
make the second one change the array -- unless it's a bug.
I've boiled the script down to a couple of dozen lines that
demonstrate the problem without references to a database or to other
scripts. Having this to play with may help others give me some
insight.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head> <title>foreach problem</title> </head>
<body>
<?php
$qs = array();
for ($i=0; $i<3; ++$i) {
$qs[] = array($i);
}
foreach ($qs as &$q) {
}
echo $qs[0][0] . $qs[1][0] . $qs[2][0] . "<br>";
foreach ( $qs as $q ) {
echo $qs[0][0] . $qs[1][0] . $qs[2][0] . "<br>";
}
echo $qs[0][0] . $qs[1][0] . $qs[2][0] . "<br>";
?>
</body>
</html>