Annotation of embedaddon/php/ext/standard/tests/array/array_slice_variation7.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: Test array_slice() function : usage variations - different data types as keys in an array
3: --FILE--
4: <?php
5: /* Prototype : array array_slice(array $input, int $offset [, int $length [, bool $preserve_keys]])
6: * Description: Returns elements specified by offset and length
7: * Source code: ext/standard/array.c
8: */
9:
10: /*
11: * Pass different data types as keys in an array to array_slice()
12: * to test how $preserve_keys treats them
13: */
14:
15: echo "*** Testing array_slice() : usage variations ***\n";
16:
17: // Initialise function arguments not being substituted
18: $offset = 0;
19: $length = 10; // to ensure all elements are displayed
20:
21: //get an unset variable
22: $unset_var = 10;
23: unset ($unset_var);
24:
25: // heredoc string
26: $heredoc = <<<EOT
27: hello world
28: EOT;
29:
30: // arrays of different data types to be passed as $input
31: $inputs = array(
32:
33: // int data
34: /*1*/ 'int' => array(
35: 0 => 'zero',
36: 1 => 'one',
37: 12345 => 'positive',
38: -2345 => 'negative',
39: ),
40:
41: // float data
42: /*2*/ 'float' => array(
43: 10.5 => 'positive',
44: -10.5 => 'negative',
45: .5 => 'half',
46: ),
47:
48: /*3*/ 'extreme floats' => array(
49: 12.3456789000e6 => 'large',
50: 12.3456789000E-10 => 'small',
51: ),
52:
53: // null data
54: /*4*/ 'null uppercase' => array(
55: NULL => 'null 1',
56: ),
57:
58: /*5*/ 'null lowercase' => array(
59: null => 'null 2',
60: ),
61:
62: // boolean data
63: /*6*/ 'bool lowercase' => array(
64: true => 'lowert',
65: false => 'lowerf',
66: ),
67:
68: /*7*/ 'bool uppercase' => array(
69: TRUE => 'uppert',
70: FALSE => 'upperf',
71: ),
72:
73: // empty data
74: /*8*/ 'empty double quotes' => array(
75: "" => 'emptyd',
76: ),
77:
78: /*9*/ 'empty single quotes' => array(
79: '' => 'emptys',
80: ),
81:
82: // string data
83: /*10*/ 'string' => array(
84: "stringd" => 'stringd',
85: 'strings' => 'strings',
86: $heredoc => 'stringh',
87: ),
88:
89: // undefined data
90: /*11*/ 'undefined' => array(
91: @$undefined_var => 'undefined',
92: ),
93:
94: // unset data
95: /*12*/ 'unset' => array(
96: @$unset_var => 'unset',
97: ),
98: );
99:
100: // loop through each element of $inputs to check the behavior of array_slice()
101: $iterator = 1;
102: foreach($inputs as $type => $input) {
103: echo "\n-- Iteration $iterator : key type is $type --\n";
104: echo "\$preserve_keys = TRUE\n";
105: var_dump( array_slice($input, $offset, $length, true) );
106: echo "\$preserve_keys = FALSE\n";
107: var_dump( array_slice($input, $offset, $length, false) );
108: $iterator++;
109: };
110:
111: echo "Done";
112: ?>
113:
114: --EXPECTF--
115: *** Testing array_slice() : usage variations ***
116:
117: -- Iteration 1 : key type is int --
118: $preserve_keys = TRUE
119: array(4) {
120: [0]=>
121: string(4) "zero"
122: [1]=>
123: string(3) "one"
124: [12345]=>
125: string(8) "positive"
126: [-2345]=>
127: string(8) "negative"
128: }
129: $preserve_keys = FALSE
130: array(4) {
131: [0]=>
132: string(4) "zero"
133: [1]=>
134: string(3) "one"
135: [2]=>
136: string(8) "positive"
137: [3]=>
138: string(8) "negative"
139: }
140:
141: -- Iteration 2 : key type is float --
142: $preserve_keys = TRUE
143: array(3) {
144: [10]=>
145: string(8) "positive"
146: [-10]=>
147: string(8) "negative"
148: [0]=>
149: string(4) "half"
150: }
151: $preserve_keys = FALSE
152: array(3) {
153: [0]=>
154: string(8) "positive"
155: [1]=>
156: string(8) "negative"
157: [2]=>
158: string(4) "half"
159: }
160:
161: -- Iteration 3 : key type is extreme floats --
162: $preserve_keys = TRUE
163: array(2) {
164: [12345678]=>
165: string(5) "large"
166: [0]=>
167: string(5) "small"
168: }
169: $preserve_keys = FALSE
170: array(2) {
171: [0]=>
172: string(5) "large"
173: [1]=>
174: string(5) "small"
175: }
176:
177: -- Iteration 4 : key type is null uppercase --
178: $preserve_keys = TRUE
179: array(1) {
180: [""]=>
181: string(6) "null 1"
182: }
183: $preserve_keys = FALSE
184: array(1) {
185: [""]=>
186: string(6) "null 1"
187: }
188:
189: -- Iteration 5 : key type is null lowercase --
190: $preserve_keys = TRUE
191: array(1) {
192: [""]=>
193: string(6) "null 2"
194: }
195: $preserve_keys = FALSE
196: array(1) {
197: [""]=>
198: string(6) "null 2"
199: }
200:
201: -- Iteration 6 : key type is bool lowercase --
202: $preserve_keys = TRUE
203: array(2) {
204: [1]=>
205: string(6) "lowert"
206: [0]=>
207: string(6) "lowerf"
208: }
209: $preserve_keys = FALSE
210: array(2) {
211: [0]=>
212: string(6) "lowert"
213: [1]=>
214: string(6) "lowerf"
215: }
216:
217: -- Iteration 7 : key type is bool uppercase --
218: $preserve_keys = TRUE
219: array(2) {
220: [1]=>
221: string(6) "uppert"
222: [0]=>
223: string(6) "upperf"
224: }
225: $preserve_keys = FALSE
226: array(2) {
227: [0]=>
228: string(6) "uppert"
229: [1]=>
230: string(6) "upperf"
231: }
232:
233: -- Iteration 8 : key type is empty double quotes --
234: $preserve_keys = TRUE
235: array(1) {
236: [""]=>
237: string(6) "emptyd"
238: }
239: $preserve_keys = FALSE
240: array(1) {
241: [""]=>
242: string(6) "emptyd"
243: }
244:
245: -- Iteration 9 : key type is empty single quotes --
246: $preserve_keys = TRUE
247: array(1) {
248: [""]=>
249: string(6) "emptys"
250: }
251: $preserve_keys = FALSE
252: array(1) {
253: [""]=>
254: string(6) "emptys"
255: }
256:
257: -- Iteration 10 : key type is string --
258: $preserve_keys = TRUE
259: array(3) {
260: ["stringd"]=>
261: string(7) "stringd"
262: ["strings"]=>
263: string(7) "strings"
264: ["hello world"]=>
265: string(7) "stringh"
266: }
267: $preserve_keys = FALSE
268: array(3) {
269: ["stringd"]=>
270: string(7) "stringd"
271: ["strings"]=>
272: string(7) "strings"
273: ["hello world"]=>
274: string(7) "stringh"
275: }
276:
277: -- Iteration 11 : key type is undefined --
278: $preserve_keys = TRUE
279: array(1) {
280: [""]=>
281: string(9) "undefined"
282: }
283: $preserve_keys = FALSE
284: array(1) {
285: [""]=>
286: string(9) "undefined"
287: }
288:
289: -- Iteration 12 : key type is unset --
290: $preserve_keys = TRUE
291: array(1) {
292: [""]=>
293: string(5) "unset"
294: }
295: $preserve_keys = FALSE
296: array(1) {
297: [""]=>
298: string(5) "unset"
299: }
300: Done
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>