1--TEST--
2Test arsort() function : usage variations - sort integer/float values
3--FILE--
4<?php
5/* Prototype  : bool arsort ( array &$array [, int $sort_flags] )
6 * Description: Sort an array and maintain index association
7                Elements will be arranged from highest to lowest when this function has completed.
8 * Source code: ext/standard/array.c
9*/
10
11/*
12 * Testing arsort() by providing different integer/float value arrays for $array argument with following values
13 * 1. flag value as defualt
14 * 2. SORT_REGULAR - compare items normally
15 * 3. SORT_NUMERIC - compare items numerically
16*/
17
18echo "*** Testing arsort() : usage variations ***\n";
19
20// group of various arrays with indices
21$various_arrays = array(
22  // negative/posative integer array
23  array(1 => 11, 2 => -11, 3 => 21, 4 => -21, 5 => 31, 6 => -31, 7 => 0, 8 => 41, 10 =>-41),
24
25  // float value array
26  array(1 => 10.5, 2 => -10.5, 3 => 10.5e2, 4 => 10.6E-2, 5 => .5, 6 => .0001, 7 => -.1),
27
28  // mixed value array
29  array(1 => .0001, 2 => .0021, 3 => -.01, 4 => -1, 5 => 0, 6 => .09, 7 => 2, 8 => -.9, 9 => 10.6E-2, 10 => -10.6E-2, 11 => 33),
30
31  // array values contains minimum and maximum ranges
32  array(1 => 2147483647, 2 => 2147483648, 3 => -2147483647, 4 => -2147483648, 5 => -0, 6 => 0, 7 => -2147483649)
33);
34
35// set of possible flag values
36$flag_value = array("SORT_REGULAR" => SORT_REGULAR, "SORT_NUMERIC" => SORT_NUMERIC);
37
38$count = 1;
39echo "\n-- Testing arsort() by supplying various integer/float arrays --\n";
40
41// loop through to test arsort() with different arrays
42foreach ($various_arrays as $array) {
43  echo "\n-- Iteration $count --\n";
44
45  echo "- With default sort_flag -\n";
46  $temp_array = $array;
47  var_dump(arsort($temp_array) );
48  var_dump($temp_array);
49
50  // loop through $flag_value array and setting all possible flag values
51  foreach($flag_value as $key => $flag){
52    echo "- Sort_flag = $key -\n";
53    $temp_array = $array;
54    var_dump(arsort($temp_array, $flag) );
55    var_dump($temp_array);
56  }
57  $count++;
58}
59
60echo "Done\n";
61?>
62--EXPECTF--
63*** Testing arsort() : usage variations ***
64
65-- Testing arsort() by supplying various integer/float arrays --
66
67-- Iteration 1 --
68- With default sort_flag -
69bool(true)
70array(9) {
71  [8]=>
72  int(41)
73  [5]=>
74  int(31)
75  [3]=>
76  int(21)
77  [1]=>
78  int(11)
79  [7]=>
80  int(0)
81  [2]=>
82  int(-11)
83  [4]=>
84  int(-21)
85  [6]=>
86  int(-31)
87  [10]=>
88  int(-41)
89}
90- Sort_flag = SORT_REGULAR -
91bool(true)
92array(9) {
93  [8]=>
94  int(41)
95  [5]=>
96  int(31)
97  [3]=>
98  int(21)
99  [1]=>
100  int(11)
101  [7]=>
102  int(0)
103  [2]=>
104  int(-11)
105  [4]=>
106  int(-21)
107  [6]=>
108  int(-31)
109  [10]=>
110  int(-41)
111}
112- Sort_flag = SORT_NUMERIC -
113bool(true)
114array(9) {
115  [8]=>
116  int(41)
117  [5]=>
118  int(31)
119  [3]=>
120  int(21)
121  [1]=>
122  int(11)
123  [7]=>
124  int(0)
125  [2]=>
126  int(-11)
127  [4]=>
128  int(-21)
129  [6]=>
130  int(-31)
131  [10]=>
132  int(-41)
133}
134
135-- Iteration 2 --
136- With default sort_flag -
137bool(true)
138array(7) {
139  [3]=>
140  float(1050)
141  [1]=>
142  float(10.5)
143  [5]=>
144  float(0.5)
145  [4]=>
146  float(0.106)
147  [6]=>
148  float(0.0001)
149  [7]=>
150  float(-0.1)
151  [2]=>
152  float(-10.5)
153}
154- Sort_flag = SORT_REGULAR -
155bool(true)
156array(7) {
157  [3]=>
158  float(1050)
159  [1]=>
160  float(10.5)
161  [5]=>
162  float(0.5)
163  [4]=>
164  float(0.106)
165  [6]=>
166  float(0.0001)
167  [7]=>
168  float(-0.1)
169  [2]=>
170  float(-10.5)
171}
172- Sort_flag = SORT_NUMERIC -
173bool(true)
174array(7) {
175  [3]=>
176  float(1050)
177  [1]=>
178  float(10.5)
179  [5]=>
180  float(0.5)
181  [4]=>
182  float(0.106)
183  [6]=>
184  float(0.0001)
185  [7]=>
186  float(-0.1)
187  [2]=>
188  float(-10.5)
189}
190
191-- Iteration 3 --
192- With default sort_flag -
193bool(true)
194array(11) {
195  [11]=>
196  int(33)
197  [7]=>
198  int(2)
199  [9]=>
200  float(0.106)
201  [6]=>
202  float(0.09)
203  [2]=>
204  float(0.0021)
205  [1]=>
206  float(0.0001)
207  [5]=>
208  int(0)
209  [3]=>
210  float(-0.01)
211  [10]=>
212  float(-0.106)
213  [8]=>
214  float(-0.9)
215  [4]=>
216  int(-1)
217}
218- Sort_flag = SORT_REGULAR -
219bool(true)
220array(11) {
221  [11]=>
222  int(33)
223  [7]=>
224  int(2)
225  [9]=>
226  float(0.106)
227  [6]=>
228  float(0.09)
229  [2]=>
230  float(0.0021)
231  [1]=>
232  float(0.0001)
233  [5]=>
234  int(0)
235  [3]=>
236  float(-0.01)
237  [10]=>
238  float(-0.106)
239  [8]=>
240  float(-0.9)
241  [4]=>
242  int(-1)
243}
244- Sort_flag = SORT_NUMERIC -
245bool(true)
246array(11) {
247  [11]=>
248  int(33)
249  [7]=>
250  int(2)
251  [9]=>
252  float(0.106)
253  [6]=>
254  float(0.09)
255  [2]=>
256  float(0.0021)
257  [1]=>
258  float(0.0001)
259  [5]=>
260  int(0)
261  [3]=>
262  float(-0.01)
263  [10]=>
264  float(-0.106)
265  [8]=>
266  float(-0.9)
267  [4]=>
268  int(-1)
269}
270
271-- Iteration 4 --
272- With default sort_flag -
273bool(true)
274array(7) {
275  [2]=>
276  %s(2147483648)
277  [1]=>
278  int(2147483647)
279  [6]=>
280  int(0)
281  [5]=>
282  int(0)
283  [3]=>
284  int(-2147483647)
285  [4]=>
286  %s(-2147483648)
287  [7]=>
288  %s(-2147483649)
289}
290- Sort_flag = SORT_REGULAR -
291bool(true)
292array(7) {
293  [2]=>
294  %s(2147483648)
295  [1]=>
296  int(2147483647)
297  [6]=>
298  int(0)
299  [5]=>
300  int(0)
301  [3]=>
302  int(-2147483647)
303  [4]=>
304  %s(-2147483648)
305  [7]=>
306  %s(-2147483649)
307}
308- Sort_flag = SORT_NUMERIC -
309bool(true)
310array(7) {
311  [2]=>
312  %s(2147483648)
313  [1]=>
314  int(2147483647)
315  [6]=>
316  int(0)
317  [5]=>
318  int(0)
319  [3]=>
320  int(-2147483647)
321  [4]=>
322  %s(-2147483648)
323  [7]=>
324  %s(-2147483649)
325}
326Done