1--TEST--
2Test usort() function : usage variations - Pass different data types as $cmp_function arg
3--FILE--
4<?php
5/* Prototype  : bool usort(array $array_arg, string $cmp_function)
6 * Description: Sort an array by values using a user-defined comparison function
7 * Source code: ext/standard/array.c
8 */
9
10/*
11 * Pass different data types as $cmp_function argument to usort() to test behaviour
12 */
13
14echo "*** Testing usort() : usage variation ***\n";
15
16// Class definition for object variable
17class MyClass
18{
19  public function __toString()
20  {
21    return 'object';
22  }
23}
24
25$array_arg = array(0 => 1, 1 => -1, 2 => 3, 3 => 10, 4 => 4, 5 => 2, 6 => 8, 7 => 5);
26
27// Get an unset variable
28$unset_var = 10;
29unset ($unset_var);
30
31// Get resource variable
32$fp = fopen(__FILE__,'r');
33
34// different values for $cmp_function
35$inputs = array(
36
37       // int data
38/*1*/  0,
39       1,
40       12345,
41       -2345,
42
43       // float data
44/*5*/  10.5,
45       -10.5,
46       10.1234567e8,
47       10.7654321E-8,
48       .5,
49
50       // array data
51/*10*/ array(),
52       array(0),
53       array(1),
54       array(1, 2),
55       array('color' => 'red', 'item' => 'pen'),
56
57       // null data
58/*15*/ NULL,
59       null,
60
61       // boolean data
62/*17*/ true,
63       false,
64       TRUE,
65       FALSE,
66
67       // empty data
68/*21*/ "",
69       '',
70
71       // string data
72       "string",
73       'string',
74
75       // object data
76/*25*/ new MyClass(),
77
78       // resource data
79       $fp,
80
81       // undefined data
82       @$undefined_var,
83
84       // unset data
85/*28*/ @$unset_var,
86);
87
88// loop through each element of $inputs to check the behavior of usort()
89$iterator = 1;
90foreach($inputs as $input) {
91  echo "\n-- Iteration $iterator --\n";
92  var_dump( usort($array_arg, $input) );
93  $iterator++;
94};
95
96//closing resource
97fclose($fp);
98?>
99===DONE===
100--EXPECTF--
101*** Testing usort() : usage variation ***
102
103-- Iteration 1 --
104
105Warning: usort() expects parameter 2 to be a valid callback, no array or string given in %s on line %d
106NULL
107
108-- Iteration 2 --
109
110Warning: usort() expects parameter 2 to be a valid callback, no array or string given in %s on line %d
111NULL
112
113-- Iteration 3 --
114
115Warning: usort() expects parameter 2 to be a valid callback, no array or string given in %s on line %d
116NULL
117
118-- Iteration 4 --
119
120Warning: usort() expects parameter 2 to be a valid callback, no array or string given in %s on line %d
121NULL
122
123-- Iteration 5 --
124
125Warning: usort() expects parameter 2 to be a valid callback, no array or string given in %s on line %d
126NULL
127
128-- Iteration 6 --
129
130Warning: usort() expects parameter 2 to be a valid callback, no array or string given in %s on line %d
131NULL
132
133-- Iteration 7 --
134
135Warning: usort() expects parameter 2 to be a valid callback, no array or string given in %s on line %d
136NULL
137
138-- Iteration 8 --
139
140Warning: usort() expects parameter 2 to be a valid callback, no array or string given in %s on line %d
141NULL
142
143-- Iteration 9 --
144
145Warning: usort() expects parameter 2 to be a valid callback, no array or string given in %s on line %d
146NULL
147
148-- Iteration 10 --
149
150Warning: usort() expects parameter 2 to be a valid callback, array must have exactly two members in %s on line %d
151NULL
152
153-- Iteration 11 --
154
155Warning: usort() expects parameter 2 to be a valid callback, array must have exactly two members in %s on line %d
156NULL
157
158-- Iteration 12 --
159
160Warning: usort() expects parameter 2 to be a valid callback, array must have exactly two members in %s on line %d
161NULL
162
163-- Iteration 13 --
164
165Warning: usort() expects parameter 2 to be a valid callback, first array member is not a valid class name or object in %s on line %d
166NULL
167
168-- Iteration 14 --
169
170Warning: usort() expects parameter 2 to be a valid callback, first array member is not a valid class name or object in %s on line %d
171NULL
172
173-- Iteration 15 --
174
175Warning: usort() expects parameter 2 to be a valid callback, no array or string given in %s on line %d
176NULL
177
178-- Iteration 16 --
179
180Warning: usort() expects parameter 2 to be a valid callback, no array or string given in %s on line %d
181NULL
182
183-- Iteration 17 --
184
185Warning: usort() expects parameter 2 to be a valid callback, no array or string given in %s on line %d
186NULL
187
188-- Iteration 18 --
189
190Warning: usort() expects parameter 2 to be a valid callback, no array or string given in %s on line %d
191NULL
192
193-- Iteration 19 --
194
195Warning: usort() expects parameter 2 to be a valid callback, no array or string given in %s on line %d
196NULL
197
198-- Iteration 20 --
199
200Warning: usort() expects parameter 2 to be a valid callback, no array or string given in %s on line %d
201NULL
202
203-- Iteration 21 --
204
205Warning: usort() expects parameter 2 to be a valid callback, function '' not found or invalid function name in %s on line %d
206NULL
207
208-- Iteration 22 --
209
210Warning: usort() expects parameter 2 to be a valid callback, function '' not found or invalid function name in %s on line %d
211NULL
212
213-- Iteration 23 --
214
215Warning: usort() expects parameter 2 to be a valid callback, function 'string' not found or invalid function name in %s on line %d
216NULL
217
218-- Iteration 24 --
219
220Warning: usort() expects parameter 2 to be a valid callback, function 'string' not found or invalid function name in %s on line %d
221NULL
222
223-- Iteration 25 --
224
225Warning: usort() expects parameter 2 to be a valid callback, no array or string given in %s on line %d
226NULL
227
228-- Iteration 26 --
229
230Warning: usort() expects parameter 2 to be a valid callback, no array or string given in %s on line %d
231NULL
232
233-- Iteration 27 --
234
235Warning: usort() expects parameter 2 to be a valid callback, no array or string given in %s on line %d
236NULL
237
238-- Iteration 28 --
239
240Warning: usort() expects parameter 2 to be a valid callback, no array or string given in %s on line %d
241NULL
242===DONE===