ID:          40654
 Comment by:  same at saeven dot net
 Reported By: saeven at saeven dot net
 Status:      Open
 Bug Type:    Scripting Engine problem
 PHP Version: 5.2.1
 New Comment:

I'd add that print_r properly displays the constructed array, which
contradicts what foreach displays (which is why I thought this required
filing).


Previous Comments:
------------------------------------------------------------------------

[2007-02-27 04:44:35] saeven at saeven dot net

Description:
------------
Using a reference to build an array, later causes foreach to fail when
reusing the reference variable name.

The bug is solved by adding unset( $element); before block B, but this
shouldn't be necessary.

Reproduce code:
---------------
// Block A - Build the Array
$a = array( 2 => array( "value" => "a" ), 
                        4 => array( "value" => "b" ),
                        6 => array( "value" => "c" ) );
                        
$b = array( "orange", "blue", "green" );

foreach( $a as $id => &$element ){
        $extra = array();
        
        foreach( $b as $color )
                array_push( $extra, $color );
                
        $element += array( 'extra' => $extra );
}

// Block B - Iterate through
foreach( $a as $element )
        echo $element["value"].' ';


Expected result:
----------------
a b c

Actual result:
--------------
a b b


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=40654&edit=1

Reply via email to