Re: bug when using foreach with references?
| From: | Jille Timmermans | Date: | Thu, 22 Oct 2009 01:40:27 +0000 |
| Subject: | Re: bug when using foreach with references? | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-45863@lists.php.net to get a copy of this message | ||
Richard K Miller schreef:
> Is this a bug in PHP?
No
>
> <?php
> $items = array('apple', 'banana', 'carrot');
> print_r($items);
> foreach ($items as &$item) { }
$item is now a reference to the last element of $items.
> print_r($items);
> foreach ($items as $item) { }
And here, the foreach loop writes to $item for each element: thus
assiging that value to the last element of $items.
> print_r($items);
> ?>
>
> // Output:
> Array
> (
> [0] => apple
> [1] => banana
> [2] => carrot
> )
> Array
> (
> [0] => apple
> [1] => banana
> [2] => carrot
> )
> Array
> (
> [0] => apple
> [1] => banana
> [2] => banana
> )
>
> Two bananas in the last set?! Not what I expected.
You can fix your bug by using 'unset($item);' after the second foreach-loop.
-- Jille
>
> Richard
>
>