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