1--TEST--
2Test array_reverse() function : usage variations - assoc. array with diff. keys for 'array' argument
3--FILE--
4<?php
5/* Prototype  : array array_reverse(array $array [, bool $preserve_keys])
6 * Description: Return input as a new array with the order of the entries reversed
7 * Source code: ext/standard/array.c
8*/
9
10/*
11 * Testing the functionality of array_reverse() by giving associative arrays with different
12 * keys for $array argument
13*/
14
15echo "*** Testing array_reverse() : usage variations ***\n";
16
17//get an unset variable
18$unset_var = 10;
19unset ($unset_var);
20
21//get a resource variable
22$fp = fopen(__FILE__, "r");
23
24//get a class
25class classA{
26  public function __toString(){
27    return "Class A object";
28  }
29}
30
31// get a heredoc string
32$heredoc = <<<EOT
33Hello world
34EOT;
35
36// initializing the array
37$arrays = array (
38
39       // empty array
40/*1*/  array(),
41
42       // arrays with integer keys
43       array(0 => "0"),
44       array(1 => "1"),
45       array(1 => "1", 2 => "2", 3 => "3", 4 => "4"),
46
47       // arrays with float keys
48/*5*/  array(2.3333 => "float"),
49       array(1.2 => "f1", 3.33 => "f2", 4.89999922839999 => "f3", 33333333.333333 => "f4"),
50
51       // arrays with string keys
52       array("\tHello" => 111, "re\td" => "color", "\v\fworld" => 2.2, "pen\n" => 33),
53/*8*/  array("\tHello" => 111, "re\td" => "color", "\v\fworld" => 2.2, "pen\n" => 33),
54       array("hello", $heredoc => "string"), // heredoc
55
56       // array with object, unset variable and resource variable
57       array(new classA() => 11, @$unset_var => "hello", $fp => 'resource'),
58
59       // array with mixed values
60/*11*/ array('hello' => 1, new classA() => 2, "fruit" => 2.2, $fp => 'resource', 133 => "int", 444.432 => "float", @$unset_var => "unset", $heredoc => "heredoc")
61);
62
63// loop through the various elements of $arrays to test array_reverse()
64$iterator = 1;
65foreach($arrays as $array) {
66  echo "-- Iteration $iterator --\n";
67  // with default argument
68  echo "- default argument -\n";
69  var_dump( array_reverse($array) );
70  // with $preserve_keys argument
71  echo "- \$preserve keys = true -\n";
72  var_dump( array_reverse($array, true) );
73  echo "- \$preserve_keys = false -\n";
74  var_dump( array_reverse($array, false) );
75  $iterator++;
76};
77
78// close the file resource used
79fclose($fp);
80
81echo "Done";
82?>
83--EXPECTF--
84*** Testing array_reverse() : usage variations ***
85
86Warning: Illegal offset type in %s on line %d
87
88Warning: Illegal offset type in %s on line %d
89
90Warning: Illegal offset type in %s on line %d
91
92Warning: Illegal offset type in %s on line %d
93-- Iteration 1 --
94- default argument -
95array(0) {
96}
97- $preserve keys = true -
98array(0) {
99}
100- $preserve_keys = false -
101array(0) {
102}
103-- Iteration 2 --
104- default argument -
105array(1) {
106  [0]=>
107  string(1) "0"
108}
109- $preserve keys = true -
110array(1) {
111  [0]=>
112  string(1) "0"
113}
114- $preserve_keys = false -
115array(1) {
116  [0]=>
117  string(1) "0"
118}
119-- Iteration 3 --
120- default argument -
121array(1) {
122  [0]=>
123  string(1) "1"
124}
125- $preserve keys = true -
126array(1) {
127  [1]=>
128  string(1) "1"
129}
130- $preserve_keys = false -
131array(1) {
132  [0]=>
133  string(1) "1"
134}
135-- Iteration 4 --
136- default argument -
137array(4) {
138  [0]=>
139  string(1) "4"
140  [1]=>
141  string(1) "3"
142  [2]=>
143  string(1) "2"
144  [3]=>
145  string(1) "1"
146}
147- $preserve keys = true -
148array(4) {
149  [4]=>
150  string(1) "4"
151  [3]=>
152  string(1) "3"
153  [2]=>
154  string(1) "2"
155  [1]=>
156  string(1) "1"
157}
158- $preserve_keys = false -
159array(4) {
160  [0]=>
161  string(1) "4"
162  [1]=>
163  string(1) "3"
164  [2]=>
165  string(1) "2"
166  [3]=>
167  string(1) "1"
168}
169-- Iteration 5 --
170- default argument -
171array(1) {
172  [0]=>
173  string(5) "float"
174}
175- $preserve keys = true -
176array(1) {
177  [2]=>
178  string(5) "float"
179}
180- $preserve_keys = false -
181array(1) {
182  [0]=>
183  string(5) "float"
184}
185-- Iteration 6 --
186- default argument -
187array(4) {
188  [0]=>
189  string(2) "f4"
190  [1]=>
191  string(2) "f3"
192  [2]=>
193  string(2) "f2"
194  [3]=>
195  string(2) "f1"
196}
197- $preserve keys = true -
198array(4) {
199  [33333333]=>
200  string(2) "f4"
201  [4]=>
202  string(2) "f3"
203  [3]=>
204  string(2) "f2"
205  [1]=>
206  string(2) "f1"
207}
208- $preserve_keys = false -
209array(4) {
210  [0]=>
211  string(2) "f4"
212  [1]=>
213  string(2) "f3"
214  [2]=>
215  string(2) "f2"
216  [3]=>
217  string(2) "f1"
218}
219-- Iteration 7 --
220- default argument -
221array(4) {
222  ["pen
223"]=>
224  int(33)
225  ["world"]=>
226  float(2.2)
227  ["re	d"]=>
228  string(5) "color"
229  ["	Hello"]=>
230  int(111)
231}
232- $preserve keys = true -
233array(4) {
234  ["pen
235"]=>
236  int(33)
237  ["world"]=>
238  float(2.2)
239  ["re	d"]=>
240  string(5) "color"
241  ["	Hello"]=>
242  int(111)
243}
244- $preserve_keys = false -
245array(4) {
246  ["pen
247"]=>
248  int(33)
249  ["world"]=>
250  float(2.2)
251  ["re	d"]=>
252  string(5) "color"
253  ["	Hello"]=>
254  int(111)
255}
256-- Iteration 8 --
257- default argument -
258array(4) {
259  ["pen
260"]=>
261  int(33)
262  ["world"]=>
263  float(2.2)
264  ["re	d"]=>
265  string(5) "color"
266  ["	Hello"]=>
267  int(111)
268}
269- $preserve keys = true -
270array(4) {
271  ["pen
272"]=>
273  int(33)
274  ["world"]=>
275  float(2.2)
276  ["re	d"]=>
277  string(5) "color"
278  ["	Hello"]=>
279  int(111)
280}
281- $preserve_keys = false -
282array(4) {
283  ["pen
284"]=>
285  int(33)
286  ["world"]=>
287  float(2.2)
288  ["re	d"]=>
289  string(5) "color"
290  ["	Hello"]=>
291  int(111)
292}
293-- Iteration 9 --
294- default argument -
295array(2) {
296  ["Hello world"]=>
297  string(6) "string"
298  [0]=>
299  string(5) "hello"
300}
301- $preserve keys = true -
302array(2) {
303  ["Hello world"]=>
304  string(6) "string"
305  [0]=>
306  string(5) "hello"
307}
308- $preserve_keys = false -
309array(2) {
310  ["Hello world"]=>
311  string(6) "string"
312  [0]=>
313  string(5) "hello"
314}
315-- Iteration 10 --
316- default argument -
317array(1) {
318  [""]=>
319  string(5) "hello"
320}
321- $preserve keys = true -
322array(1) {
323  [""]=>
324  string(5) "hello"
325}
326- $preserve_keys = false -
327array(1) {
328  [""]=>
329  string(5) "hello"
330}
331-- Iteration 11 --
332- default argument -
333array(6) {
334  ["Hello world"]=>
335  string(7) "heredoc"
336  [""]=>
337  string(5) "unset"
338  [0]=>
339  string(5) "float"
340  [1]=>
341  string(3) "int"
342  ["fruit"]=>
343  float(2.2)
344  ["hello"]=>
345  int(1)
346}
347- $preserve keys = true -
348array(6) {
349  ["Hello world"]=>
350  string(7) "heredoc"
351  [""]=>
352  string(5) "unset"
353  [444]=>
354  string(5) "float"
355  [133]=>
356  string(3) "int"
357  ["fruit"]=>
358  float(2.2)
359  ["hello"]=>
360  int(1)
361}
362- $preserve_keys = false -
363array(6) {
364  ["Hello world"]=>
365  string(7) "heredoc"
366  [""]=>
367  string(5) "unset"
368  [0]=>
369  string(5) "float"
370  [1]=>
371  string(3) "int"
372  ["fruit"]=>
373  float(2.2)
374  ["hello"]=>
375  int(1)
376}
377Done
378