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. I originally encountered this problem using PHP v5.2.4 under Windows XP. I later reproduced it in v5.3.2 under XP. The function call wasn't doing it. I replaced the function call with an echo statement and got the same result. For my immediate needs, I evaded the problem by changing the foreach loop to a for loop that references elements of $objs by subscript. That leaves me with the question: what is going wrong with foreach? I'm trying to either demonstrate that it's my error, not the PHP engine's, or isolate the problem in a small script that I can submit with a bug report. The current script isn't suitable for that because it builds $objs by reading a database table and doing some rather elaborate manipulations of the data. I tried to eliminate the database by doing a var_export of the array after I built it, then assigning the exported expression to a variable immediately before the foreach. That "broke the bug" -- the loop behaved correctly. There's a report of a bug that looks similar in the comments section of php.net's manual page for foreach, time stamped 09-Jul-2009 11:50. As far as I can tell it was never submitted as a bug and was never resolved. I sent an inquiry to the author but he didn't respond. Can anyone make suggestions on this -- either insights into what's wrong, or suggestions for producing a portable, reproducible example? -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php