1--TEST--
2Test krsort() function : usage variations - sort strings
3--FILE--
4<?php
5/* Prototype  : bool krsort ( array &$array [, int $sort_flags] )
6 * Description: Sort an array by key in reverse order, maintaining key to data correlation
7 * Source code: ext/standard/array.c
8*/
9
10/*
11 * testing krsort() by providing array of string values for $array argument with
12 * following flag values:
13 *  1.flag value as defualt
14 *  2.SORT_REGULAR - compare items normally
15 *  3.SORT_STRING  - compare items as strings
16*/
17
18echo "*** Testing krsort() : usage variations ***\n";
19
20$various_arrays = array (
21  // diff. escape sequence chars with key values
22  array ( null =>  null, NULL => NULL, "\a" => "\a", "\cx" => "\cx", "\e" => "\e",
23          "\f" => "\f", "\n" =>"\n", "\r" => "\r", "\t" => "\t", "\xhh" => "\xhh",
24          "\ddd" => "\ddd", "\v" => "\v"
25        ),
26
27  // array containing different strings with key values
28  array ( 'Lemon' => "lemoN", 'o' => "Orange", 'B' => "banana", 'Apple' => "apple", 'te' => "Test",
29          't' => "TTTT", 'T' => "ttt", 'W' => "ww", 'X' => "x", 'x' => "X", 'O' => "oraNGe",
30          'B' => "BANANA"
31        )
32);
33
34$flags = array("SORT_REGULAR" => SORT_REGULAR, "SORT_STRING" => SORT_STRING);
35
36$count = 1;
37echo "\n-- Testing krsort() by supplying various string arrays --\n";
38
39// loop through to test krsort() with different arrays
40foreach ($various_arrays as $array) {
41  echo "\n-- Iteration $count --\n";
42
43  echo "- With defualt sort flag -\n";
44  $temp_array = $array;
45  var_dump(krsort($temp_array) ); // expecting : bool(true)
46  var_dump($temp_array);
47
48  // loop through $flags array and call krsort() with all possible sort flag values
49  foreach($flags as $key => $flag){
50    echo "- Sort flag = $key -\n";
51    $temp_array = $array;
52    var_dump(krsort($temp_array, $flag) ); // expecting : bool(true)
53    var_dump($temp_array);
54  }
55  $count++;
56}
57
58echo "Done\n";
59?>
60--EXPECT--
61*** Testing krsort() : usage variations ***
62
63-- Testing krsort() by supplying various string arrays --
64
65-- Iteration 1 --
66- With defualt sort flag -
67bool(true)
68array(11) {
69  ["\xhh"]=>
70  string(4) "\xhh"
71  ["\ddd"]=>
72  string(4) "\ddd"
73  ["\cx"]=>
74  string(3) "\cx"
75  ["\a"]=>
76  string(2) "\a"
77  [""]=>
78  string(1) ""
79  ["
79"]=>
80  string(1) "
80"
81  [""]=>
82  string(1) ""
83  [""]=>
84  string(1) ""
85  ["
86"]=>
87  string(1) "
88"
89  ["	"]=>
90  string(1) "	"
91  [""]=>
92  NULL
93}
94- Sort flag = SORT_REGULAR -
95bool(true)
96array(11) {
97  ["\xhh"]=>
98  string(4) "\xhh"
99  ["\ddd"]=>
100  string(4) "\ddd"
101  ["\cx"]=>
102  string(3) "\cx"
103  ["\a"]=>
104  string(2) "\a"
105  [""]=>
106  string(1) ""
107  ["
107"]=>
108  string(1) "
108"
109  [""]=>
110  string(1) ""
111  [""]=>
112  string(1) ""
113  ["
114"]=>
115  string(1) "
116"
117  ["	"]=>
118  string(1) "	"
119  [""]=>
120  NULL
121}
122- Sort flag = SORT_STRING -
123bool(true)
124array(11) {
125  ["\xhh"]=>
126  string(4) "\xhh"
127  ["\ddd"]=>
128  string(4) "\ddd"
129  ["\cx"]=>
130  string(3) "\cx"
131  ["\a"]=>
132  string(2) "\a"
133  [""]=>
134  string(1) ""
135  ["
135"]=>
136  string(1) "
136"
137  [""]=>
138  string(1) ""
139  [""]=>
140  string(1) ""
141  ["
142"]=>
143  string(1) "
144"
145  ["	"]=>
146  string(1) "	"
147  [""]=>
148  NULL
149}
150
151-- Iteration 2 --
152- With defualt sort flag -
153bool(true)
154array(11) {
155  ["x"]=>
156  string(1) "X"
157  ["te"]=>
158  string(4) "Test"
159  ["t"]=>
160  string(4) "TTTT"
161  ["o"]=>
162  string(6) "Orange"
163  ["X"]=>
164  string(1) "x"
165  ["W"]=>
166  string(2) "ww"
167  ["T"]=>
168  string(3) "ttt"
169  ["O"]=>
170  string(6) "oraNGe"
171  ["Lemon"]=>
172  string(5) "lemoN"
173  ["B"]=>
174  string(6) "BANANA"
175  ["Apple"]=>
176  string(5) "apple"
177}
178- Sort flag = SORT_REGULAR -
179bool(true)
180array(11) {
181  ["x"]=>
182  string(1) "X"
183  ["te"]=>
184  string(4) "Test"
185  ["t"]=>
186  string(4) "TTTT"
187  ["o"]=>
188  string(6) "Orange"
189  ["X"]=>
190  string(1) "x"
191  ["W"]=>
192  string(2) "ww"
193  ["T"]=>
194  string(3) "ttt"
195  ["O"]=>
196  string(6) "oraNGe"
197  ["Lemon"]=>
198  string(5) "lemoN"
199  ["B"]=>
200  string(6) "BANANA"
201  ["Apple"]=>
202  string(5) "apple"
203}
204- Sort flag = SORT_STRING -
205bool(true)
206array(11) {
207  ["x"]=>
208  string(1) "X"
209  ["te"]=>
210  string(4) "Test"
211  ["t"]=>
212  string(4) "TTTT"
213  ["o"]=>
214  string(6) "Orange"
215  ["X"]=>
216  string(1) "x"
217  ["W"]=>
218  string(2) "ww"
219  ["T"]=>
220  string(3) "ttt"
221  ["O"]=>
222  string(6) "oraNGe"
223  ["Lemon"]=>
224  string(5) "lemoN"
225  ["B"]=>
226  string(6) "BANANA"
227  ["Apple"]=>
228  string(5) "apple"
229}
230Done
231