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