1--TEST--
2Test array_intersect_ukey() function : usage variation - Passing unexpected values to optional third argument
3--FILE--
4<?php
5/* Prototype  : array array_intersect_ukey(array arr1, array arr2 [, array ...], callback key_compare_func)
6 * Description: Computes the intersection of arrays using a callback function on the keys for comparison.
7 * Source code: ext/standard/array.c
8 */
9
10echo "*** Testing array_intersect_ukey() : usage variation ***\n";
11
12//Initialise arguments
13$array1 = array('blue'  => 1, 'red'  => 2, 'green'  => 3, 'purple' => 4);
14$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan'   => 8);
15$array4 = array('green' => 5, 'cyan'   => 8);
16
17//Call back function
18function key_compare_func($key1, $key2)
19{
20    if ($key1 == $key2)
21        return 0;
22    else
23        return ($key1 > $key2)? 1:-1;
24}
25
26//get an unset variable
27$unset_var = 10;
28unset ($unset_var);
29
30//resource variable
31$fp = fopen(__FILE__, "r");
32
33// define some classes
34class classWithToString
35{
36	public function __toString() {
37		return "Class A object";
38	}
39}
40
41class classWithoutToString
42{
43}
44
45// heredoc string
46$heredoc = <<<EOT
47hello world
48EOT;
49
50//array of values to iterate over
51$inputs = array(
52
53      // int data
54      'int 0' => 0,
55      'int 1' => 1,
56      'int 12345' => 12345,
57      'int -12345' => -12345,
58
59      // float data
60      'float 10.5' => 10.5,
61      'float -10.5' => -10.5,
62      'float 12.3456789000e10' => 12.3456789000e10,
63      'float -12.3456789000e10' => -12.3456789000e10,
64      'float .5' => .5,
65
66      // null data
67      'uppercase NULL' => NULL,
68      'lowercase null' => null,
69
70      // boolean data
71      'lowercase true' => true,
72      'lowercase false' =>false,
73      'uppercase TRUE' =>TRUE,
74      'uppercase FALSE' =>FALSE,
75
76      // empty data
77      'empty string DQ' => "",
78      'empty string SQ' => '',
79
80      // string data
81      'string DQ' => "string",
82      'string SQ' => 'string',
83      'mixed case string' => "sTrInG",
84      'heredoc' => $heredoc,
85
86      // object data
87      'instance of classWithToString' => new classWithToString(),
88      'instance of classWithoutToString' => new classWithoutToString(),
89
90      // undefined data
91      'undefined var' => @$undefined_var,
92
93      // unset data
94      'unset var' => @$unset_var,
95
96      // resource data
97      'resource var' => $fp,
98);
99
100// loop through each element of the array for arr2
101
102foreach($inputs as $key =>$value) {
103      echo "\n--$key--\n";
104      var_dump( array_intersect_ukey($array1, $array2, $value, 'key_compare_func') );
105      var_dump( array_intersect_ukey($array1, $array2, $value, $array4, 'key_compare_func') );
106};
107
108fclose($fp);
109?>
110===DONE===
111--EXPECTF--
112*** Testing array_intersect_ukey() : usage variation ***
113
114--int 0--
115
116Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
117NULL
118
119Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
120NULL
121
122--int 1--
123
124Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
125NULL
126
127Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
128NULL
129
130--int 12345--
131
132Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
133NULL
134
135Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
136NULL
137
138--int -12345--
139
140Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
141NULL
142
143Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
144NULL
145
146--float 10.5--
147
148Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
149NULL
150
151Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
152NULL
153
154--float -10.5--
155
156Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
157NULL
158
159Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
160NULL
161
162--float 12.3456789000e10--
163
164Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
165NULL
166
167Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
168NULL
169
170--float -12.3456789000e10--
171
172Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
173NULL
174
175Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
176NULL
177
178--float .5--
179
180Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
181NULL
182
183Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
184NULL
185
186--uppercase NULL--
187
188Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
189NULL
190
191Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
192NULL
193
194--lowercase null--
195
196Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
197NULL
198
199Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
200NULL
201
202--lowercase true--
203
204Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
205NULL
206
207Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
208NULL
209
210--lowercase false--
211
212Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
213NULL
214
215Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
216NULL
217
218--uppercase TRUE--
219
220Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
221NULL
222
223Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
224NULL
225
226--uppercase FALSE--
227
228Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
229NULL
230
231Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
232NULL
233
234--empty string DQ--
235
236Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
237NULL
238
239Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
240NULL
241
242--empty string SQ--
243
244Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
245NULL
246
247Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
248NULL
249
250--string DQ--
251
252Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
253NULL
254
255Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
256NULL
257
258--string SQ--
259
260Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
261NULL
262
263Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
264NULL
265
266--mixed case string--
267
268Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
269NULL
270
271Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
272NULL
273
274--heredoc--
275
276Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
277NULL
278
279Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
280NULL
281
282--instance of classWithToString--
283
284Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
285NULL
286
287Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
288NULL
289
290--instance of classWithoutToString--
291
292Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
293NULL
294
295Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
296NULL
297
298--undefined var--
299
300Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
301NULL
302
303Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
304NULL
305
306--unset var--
307
308Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
309NULL
310
311Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
312NULL
313
314--resource var--
315
316Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
317NULL
318
319Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d
320NULL
321===DONE===