1--TEST--
2Test array_combine() function : usage variations - unexpected values for 'keys' argument
3--FILE--
4<?php
5/* Prototype  : array array_combine(array $keys, array $values)
6 * Description: Creates an array by using the elements of the first parameter as keys
7 *              and the elements of the second as the corresponding values
8 * Source code: ext/standard/array.c
9*/
10
11/*
12* Testing array_combine() function by passing values to $keys argument other than arrays
13* and see that function emits proper warning messages wherever expected.
14* The $values argument passed is a fixed array.
15*/
16
17echo "*** Testing array_combine() : Passing non-array values to \$keys argument ***\n";
18
19// Initialise $values argument
20$values = array(1, 2);
21
22//get an unset variable
23$unset_var = 10;
24unset($unset_var);
25
26// get a class
27class classA
28{
29  public function __toString() {
30    return "Class A object";
31  }
32}
33
34// heredoc string
35$heredoc = <<<EOT
36hello world
37EOT;
38
39// get a resource variable
40$fp = fopen(__FILE__, "r");
41
42// unexpected values to be passed to $keys argument
43$keys_passed = array(
44
45       // int data
46/*1*/  0,
47       1,
48       12345,
49       -2345,
50
51       // float data
52/*5*/  10.5,
53       -10.5,
54       12.3456789000e10,
55       12.3456789000E-10,
56       .5,
57
58       // null data
59/*10*/ NULL,
60       null,
61
62       // boolean data
63/*12*/ true,
64       false,
65       TRUE,
66       FALSE,
67
68       // empty data
69/*16*/ "",
70       '',
71
72       // string data
73/*18*/ "string",
74       'string',
75       $heredoc,
76
77       // object data
78/*21*/ new classA(),
79
80       // undefined data
81/*22*/ @$undefined_var,
82
83       // unset data
84/*23*/ @$unset_var,
85
86       // resource variable
87/*24*/ $fp
88);
89
90// loop through each element within $keys_passed to check the behavior of array_combine()
91$iterator = 1;
92foreach($keys_passed as $keys) {
93  echo "-- Iteration $iterator --\n";
94  var_dump( array_combine($keys,$values) );
95  $iterator++;
96};
97
98echo "Done";
99?>
100--EXPECTF--
101*** Testing array_combine() : Passing non-array values to $keys argument ***
102-- Iteration 1 --
103
104Warning: array_combine() expects parameter 1 to be array, int given in %s on line %d
105NULL
106-- Iteration 2 --
107
108Warning: array_combine() expects parameter 1 to be array, int given in %s on line %d
109NULL
110-- Iteration 3 --
111
112Warning: array_combine() expects parameter 1 to be array, int given in %s on line %d
113NULL
114-- Iteration 4 --
115
116Warning: array_combine() expects parameter 1 to be array, int given in %s on line %d
117NULL
118-- Iteration 5 --
119
120Warning: array_combine() expects parameter 1 to be array, float given in %s on line %d
121NULL
122-- Iteration 6 --
123
124Warning: array_combine() expects parameter 1 to be array, float given in %s on line %d
125NULL
126-- Iteration 7 --
127
128Warning: array_combine() expects parameter 1 to be array, float given in %s on line %d
129NULL
130-- Iteration 8 --
131
132Warning: array_combine() expects parameter 1 to be array, float given in %s on line %d
133NULL
134-- Iteration 9 --
135
136Warning: array_combine() expects parameter 1 to be array, float given in %s on line %d
137NULL
138-- Iteration 10 --
139
140Warning: array_combine() expects parameter 1 to be array, null given in %s on line %d
141NULL
142-- Iteration 11 --
143
144Warning: array_combine() expects parameter 1 to be array, null given in %s on line %d
145NULL
146-- Iteration 12 --
147
148Warning: array_combine() expects parameter 1 to be array, bool given in %s on line %d
149NULL
150-- Iteration 13 --
151
152Warning: array_combine() expects parameter 1 to be array, bool given in %s on line %d
153NULL
154-- Iteration 14 --
155
156Warning: array_combine() expects parameter 1 to be array, bool given in %s on line %d
157NULL
158-- Iteration 15 --
159
160Warning: array_combine() expects parameter 1 to be array, bool given in %s on line %d
161NULL
162-- Iteration 16 --
163
164Warning: array_combine() expects parameter 1 to be array, string given in %s on line %d
165NULL
166-- Iteration 17 --
167
168Warning: array_combine() expects parameter 1 to be array, string given in %s on line %d
169NULL
170-- Iteration 18 --
171
172Warning: array_combine() expects parameter 1 to be array, string given in %s on line %d
173NULL
174-- Iteration 19 --
175
176Warning: array_combine() expects parameter 1 to be array, string given in %s on line %d
177NULL
178-- Iteration 20 --
179
180Warning: array_combine() expects parameter 1 to be array, string given in %s on line %d
181NULL
182-- Iteration 21 --
183
184Warning: array_combine() expects parameter 1 to be array, object given in %s on line %d
185NULL
186-- Iteration 22 --
187
188Warning: array_combine() expects parameter 1 to be array, null given in %s on line %d
189NULL
190-- Iteration 23 --
191
192Warning: array_combine() expects parameter 1 to be array, null given in %s on line %d
193NULL
194-- Iteration 24 --
195
196Warning: array_combine() expects parameter 1 to be array, resource given in %s on line %d
197NULL
198Done
199