ID:               42177
 User updated by:  rl at ez dot no
 Reported By:      rl at ez dot no
 Status:           Open
 Bug Type:         Arrays related
 Operating System: linux mandriva 2006
 PHP Version:      4.4.7
 New Comment:

let's continue

// clear
echo "<br>example 13";
$a1 = array( 'key1' => 1, 'key3' => 2 );
$a2 = array();
$a1 = array_merge_recursive( $a1, $a2 );
$a1 = array_merge_recursive( $a1, $a2 );
unset( $a1, $a2 );

// warning
echo "<br>example 14";
$a1 = array();
$a2 = array( 'key1' => 1, 'key3' => 2 );
$a1 = array_merge_recursive( $a1, $a2 );
$a1 = array_merge_recursive( $a1, $a2 );
unset( $a1, $a2 );

why does example 14 generate a warning while example 13 does not?
seems like if first parameter is empty then function
array_merge_recursive just assigns first parameter variable to the
second one and makes some internal marks about two arrays which point on
the same data but actually are different for a enduser. but second call
of array_merge_recursive does not know anything about it.
or something like that... no matter, but these warnings are definitely
incorrect.


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

[2007-08-02 12:24:08] rl at ez dot no

Description:
------------
Just run the code below and please answer the question:
Why those marked as 'warning' generate warning
"array_merge_recursive(): recursion detected" while others marked as
'clear' do not?

<?

// clear
echo "<br>example 1";
$a1 = array( 'a' => 1, 'b' => 2 );
$az = array_merge_recursive( $a1, $a1 );
unset( $a1, $a2 );

// clear
echo "<br>example 2";
$a1 = array( 'key1' => 1, 'key3' => 2 );
$a2 = $a1;
$az = array_merge_recursive( $a1, $a2 );
unset( $a1, $a2 );

// clear
echo "<br>example 3";
$a1 = array( 'key1' => 1, 'key3' => 2 );
$a2 = & $a1;
$az = array_merge_recursive( $a1, $a2 );
unset( $a1, $a2 );

// warning
echo "<br>example 4";
$a1 = array( 'key1' => 1, 'key3' => 2 );
$a2 = & $a1;
$a3 = $a1;
$az = array_merge_recursive( $a1, $a2 );
unset( $a1, $a2 );

// warning
echo "<br>example 5";
$a1 = array( 'key1' => 1, 'key3' => 2 );
$a2 = & $a1;
$a3 = $a2;
$az = array_merge_recursive( $a1, $a2 );
unset( $a1, $a2 );

// warning
echo "<br>example 6";
$a1 = array( 'key1' => 1, 'key3' => 2 );
$a2 = $a1;
$a2[] = 3; // $a2['c'] = 3; - no matter, warning anyway
$az = array_merge_recursive( $a1, $a2 );
unset( $a1, $a2 );

// clear
echo "<br>example 7";
$a1 = array( 'key1' => 1, 'key3' => 2 );
$a2 = & $a1;
$a2[] = 3;
$az = array_merge_recursive( $a1, $a2 );
unset( $a1, $a2 );

// warning
echo "<br>example 8";
$a1 = array( 'key1' => 1, 'key3' => 2 );
$a2 = & $a1;
$a3 = $a2;
$az = array_merge_recursive( $a1, $a3 );
unset( $a1, $a2, $a3 );

// warning
echo "<br>example 9";
$a1 = array( 'key1' => 1, 'key3' => 2 );
$a2 = $a1;
$a3 = & $a2;
$az = array_merge_recursive( $a1, $a3 );
unset( $a1, $a2, $a3 );

// clear
echo "<br>example 10";
$a1 = array( 'key1' => 1, 'key3' => 2 );
$a2 = & $a1;
$a3 = & $a2;
$az = array_merge_recursive( $a1, $a3 );
unset( $a1, $a2, $a3 );

// warning
echo "<br>example 11";
$a1 = array( 'key1' => 1, 'key3' => 2 );
$a2 = $a1;
$a3 = $a2;
$a3[] = 3;
$az = array_merge_recursive( $a1, $a3 );
unset( $a1, $a2, $a3 );

// clear
echo "<br>example 12";
$a1 = array( 'key1' => 1, 'key3' => 2 );
$a2 = & $a1;
$a3 = & $a2;
$a3[] = 3;
$az = array_merge_recursive( $a1, $a3 );
unset( $a1, $a2, $a3 );

?>



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


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

Reply via email to