RE: [PHP] Possible foreach bug; seeking advice to isolate the problem
| From: | Ford, Mike | Date: | Fri, 22 Oct 2010 09:17:05 +0000 |
| Subject: | RE: [PHP] Possible foreach bug; seeking advice to isolate the problem | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-308998@lists.php.net to get a copy of this message | ||
> -----Original Message-----
> From: Jonathan Sachs [mailto:081012@jhsachs.com]
> Sent: 20 October 2010 04:48
> To: php-general@lists.php.net
> Subject: [PHP] Possible foreach bug; seeking advice to isolate the
> problem
>
> I've got a script which originally contained the following piece of
> code:
>
> foreach ( $objs as $obj ) {
> do_some_stuff($obj);
> }
>
> When I tested it, I found that on every iteration of the loop the
> last
> element of $objs was assigned the value of the current element. I
> was
> able to step through the loop and watch this happening, element by
> element.
All the other suggestions I've seen on this are essentially correct -- before the foreach runs,
something somewhere has set $obj to be a reference to the last element of the array.
It really doesn't matter whether you can find the culprit for this or not -- the solution is
simply to put an
unset($obj)
immediately before the foreach statement -- this will break the reference (without destroying
anything but $obj!) and make the foreach behave exactly as you want.
Cheers!
Mike
--
Mike Ford,
Electronic Information Developer, Libraries and Learning Innovation,
Leeds Metropolitan University, C507 City Campus,
Woodhouse Lane, LEEDS, LS1 3HE, United Kingdom
Email: m.ford@leedsmet.ac.uk
Tel: +44 113 812 4730
To view the terms under which this email is distributed, please go to http://disclaimer.leedsmet.ac.uk/email.htm