1--TEST--
2Test array_change_key_case() function : usage variations - Pass different data types as $case arg
3--FILE--
4<?php
5/* Prototype  : array array_change_key_case(array $input [, int $case])
6 * Description: Retuns an array with all string keys lowercased [or uppercased]
7 * Source code: ext/standard/array.c
8 */
9
10/*
11 * Pass different data types as $case argument to array_change_key_case() to test behaviour
12 * Where possible, CASE_UPPER has been entered as a string value
13 */
14
15echo "*** Testing array_change_key_case() : usage variations ***\n";
16
17// Initialise function arguments not being substituted
18$array = array ('one' => 1, 'TWO' => 2, 'Three' => 3);
19
20//get an unset variable
21$unset_var = 10;
22unset ($unset_var);
23
24// heredoc string
25$heredoc = <<<EOT
26CASE_UPPER
27EOT;
28
29// get a resource variable
30$fp = fopen(__FILE__, "r");
31
32// unexpected values to be passed to $case argument
33$inputs = array(
34
35       // int data
36/*1*/  0,
37       1,
38       12345,
39       -2345,
40
41       // float data
42/*5*/  10.5,
43       -10.5,
44       12.3456789000e10,
45       12.3456789000E-10,
46       .5,
47
48       // null data
49/*10*/ NULL,
50       null,
51
52       // boolean data
53/*12*/ true,
54       false,
55       TRUE,
56       FALSE,
57
58       // empty data
59/*16*/ "",
60       '',
61       array(),
62
63       // string data
64/*19*/ "CASE_UPPER",
65       'CASE_UPPER',
66       $heredoc,
67
68       // undefined data
69/*22*/ @$undefined_var,
70
71       // unset data
72/*23*/ @$unset_var,
73);
74
75// loop through each element of $inputs to check the behavior of array_change_key_case()
76$iterator = 1;
77foreach($inputs as $input) {
78  echo "\n-- Iteration $iterator --\n";
79  var_dump( array_change_key_case($array, $input) );
80  $iterator++;
81};
82
83echo "Done";
84?>
85
86--EXPECTF--
87*** Testing array_change_key_case() : usage variations ***
88
89-- Iteration 1 --
90array(3) {
91  ["one"]=>
92  int(1)
93  ["two"]=>
94  int(2)
95  ["three"]=>
96  int(3)
97}
98
99-- Iteration 2 --
100array(3) {
101  ["ONE"]=>
102  int(1)
103  ["TWO"]=>
104  int(2)
105  ["THREE"]=>
106  int(3)
107}
108
109-- Iteration 3 --
110array(3) {
111  ["ONE"]=>
112  int(1)
113  ["TWO"]=>
114  int(2)
115  ["THREE"]=>
116  int(3)
117}
118
119-- Iteration 4 --
120array(3) {
121  ["ONE"]=>
122  int(1)
123  ["TWO"]=>
124  int(2)
125  ["THREE"]=>
126  int(3)
127}
128
129-- Iteration 5 --
130array(3) {
131  ["ONE"]=>
132  int(1)
133  ["TWO"]=>
134  int(2)
135  ["THREE"]=>
136  int(3)
137}
138
139-- Iteration 6 --
140array(3) {
141  ["ONE"]=>
142  int(1)
143  ["TWO"]=>
144  int(2)
145  ["THREE"]=>
146  int(3)
147}
148
149-- Iteration 7 --
150array(3) {
151  ["ONE"]=>
152  int(1)
153  ["TWO"]=>
154  int(2)
155  ["THREE"]=>
156  int(3)
157}
158
159-- Iteration 8 --
160array(3) {
161  ["one"]=>
162  int(1)
163  ["two"]=>
164  int(2)
165  ["three"]=>
166  int(3)
167}
168
169-- Iteration 9 --
170array(3) {
171  ["one"]=>
172  int(1)
173  ["two"]=>
174  int(2)
175  ["three"]=>
176  int(3)
177}
178
179-- Iteration 10 --
180array(3) {
181  ["one"]=>
182  int(1)
183  ["two"]=>
184  int(2)
185  ["three"]=>
186  int(3)
187}
188
189-- Iteration 11 --
190array(3) {
191  ["one"]=>
192  int(1)
193  ["two"]=>
194  int(2)
195  ["three"]=>
196  int(3)
197}
198
199-- Iteration 12 --
200array(3) {
201  ["ONE"]=>
202  int(1)
203  ["TWO"]=>
204  int(2)
205  ["THREE"]=>
206  int(3)
207}
208
209-- Iteration 13 --
210array(3) {
211  ["one"]=>
212  int(1)
213  ["two"]=>
214  int(2)
215  ["three"]=>
216  int(3)
217}
218
219-- Iteration 14 --
220array(3) {
221  ["ONE"]=>
222  int(1)
223  ["TWO"]=>
224  int(2)
225  ["THREE"]=>
226  int(3)
227}
228
229-- Iteration 15 --
230array(3) {
231  ["one"]=>
232  int(1)
233  ["two"]=>
234  int(2)
235  ["three"]=>
236  int(3)
237}
238
239-- Iteration 16 --
240
241Warning: array_change_key_case() expects parameter 2 to be long, string given in %s on line %d
242NULL
243
244-- Iteration 17 --
245
246Warning: array_change_key_case() expects parameter 2 to be long, string given in %s on line %d
247NULL
248
249-- Iteration 18 --
250
251Warning: array_change_key_case() expects parameter 2 to be long, array given in %s on line %d
252NULL
253
254-- Iteration 19 --
255
256Warning: array_change_key_case() expects parameter 2 to be long, string given in %s on line %d
257NULL
258
259-- Iteration 20 --
260
261Warning: array_change_key_case() expects parameter 2 to be long, string given in %s on line %d
262NULL
263
264-- Iteration 21 --
265
266Warning: array_change_key_case() expects parameter 2 to be long, string given in %s on line %d
267NULL
268
269-- Iteration 22 --
270array(3) {
271  ["one"]=>
272  int(1)
273  ["two"]=>
274  int(2)
275  ["three"]=>
276  int(3)
277}
278
279-- Iteration 23 --
280array(3) {
281  ["one"]=>
282  int(1)
283  ["two"]=>
284  int(2)
285  ["three"]=>
286  int(3)
287}
288Done