1--TEST--
2Test array_merge_recursive() function : usage variations - array with reference variables
3--FILE--
4<?php
5/* Prototype  : array array_merge_recursive(array $arr1[, array $...])
6 * Description: Recursively merges elements from passed arrays into one array
7 * Source code: ext/standard/array.c
8*/
9
10/*
11 * Testing the functionality of array_merge_recursive() by passing
12 * array having reference variables.
13*/
14
15echo "*** Testing array_merge_recursive() : array with reference variables for \$arr1 argument ***\n";
16
17$value1 = 10;
18$value2 = "hello";
19$value3 = 0;
20$value4 = &$value2;
21
22// input array containing elements as reference variables
23$arr1 = array(
24  0 => 0,
25  1 => &$value4,
26  2 => &$value2,
27  3 => "hello",
28  4 => &$value3,
29  $value4 => &$value2
30);
31
32// initialize the second argument
33$arr2 = array($value4 => "hello", &$value2);
34
35echo "-- With default argument --\n";
36var_dump( array_merge_recursive($arr1) );
37
38echo "-- With more arguments --\n";
39var_dump( array_merge_recursive($arr1, $arr2) );
40
41echo "Done";
42?>
43--EXPECTF--
44*** Testing array_merge_recursive() : array with reference variables for $arr1 argument ***
45-- With default argument --
46array(6) {
47  [0]=>
48  int(0)
49  [1]=>
50  &string(5) "hello"
51  [2]=>
52  &string(5) "hello"
53  [3]=>
54  string(5) "hello"
55  [4]=>
56  &int(0)
57  ["hello"]=>
58  &string(5) "hello"
59}
60-- With more arguments --
61array(7) {
62  [0]=>
63  int(0)
64  [1]=>
65  &string(5) "hello"
66  [2]=>
67  &string(5) "hello"
68  [3]=>
69  string(5) "hello"
70  [4]=>
71  &int(0)
72  ["hello"]=>
73  array(2) {
74    [0]=>
75    string(5) "hello"
76    [1]=>
77    string(5) "hello"
78  }
79  [5]=>
80  &string(5) "hello"
81}
82Done
83