Annotation of embedaddon/php/ext/standard/tests/array/array_slice_variation4.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: Test array_slice() function : usage variations - Pass different data types as $preserve_keys arg
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 $preserve_keys argument to array_slice() to test behaviour
12: */
13:
14: echo "*** Testing array_slice() : usage variations ***\n";
15:
16: // Initialise function arguments not being substituted
17: $input_array = array('one' => 1, 2, 99 => 3, 4);
18: $offset = 0;
19: $length = 3;
20:
21: //get an unset variable
22: $unset_var = 10;
23: unset ($unset_var);
24:
25: // get a class
26: class classA
27: {
28: public function __toString() {
29: return "Class A object";
30: }
31: }
32:
33: // heredoc string
34: $heredoc = <<<EOT
35: hello world
36: EOT;
37:
38: // unexpected values to be passed to $preserve_keys argument
39: $inputs = array(
40:
41: // int data
42: /*1*/ 0,
43: 1,
44: 12345,
45: -2345,
46:
47: // float data
48: /*5*/ 10.5,
49: -10.5,
50: 12.3456789000e10,
51: 12.3456789000E-10,
52: .5,
53:
54: // null data
55: /*10*/ NULL,
56: null,
57:
58: // boolean data
59: /*12*/ true,
60: false,
61: TRUE,
62: FALSE,
63:
64: // empty data
65: /*16*/ "",
66: '',
67: array(),
68:
69: // string data
70: /*19*/ "string",
71: 'string',
72: $heredoc,
73:
74: // object data
75: /*22*/ new classA(),
76:
77: // undefined data
78: /*23*/ @$undefined_var,
79:
80: // unset data
81: /*24*/ @$unset_var,
82: );
83:
84: // loop through each element of $inputs to check the behavior of array_slice()
85: $iterator = 1;
86: foreach($inputs as $input) {
87: echo "\n-- Iteration $iterator --\n";
88: var_dump( array_slice($input_array, $offset, $length, $input) );
89: $iterator++;
90: };
91:
92: echo "Done";
93: ?>
94:
95: --EXPECTF--
96: *** Testing array_slice() : usage variations ***
97:
98: -- Iteration 1 --
99: array(3) {
100: ["one"]=>
101: int(1)
102: [0]=>
103: int(2)
104: [1]=>
105: int(3)
106: }
107:
108: -- Iteration 2 --
109: array(3) {
110: ["one"]=>
111: int(1)
112: [0]=>
113: int(2)
114: [99]=>
115: int(3)
116: }
117:
118: -- Iteration 3 --
119: array(3) {
120: ["one"]=>
121: int(1)
122: [0]=>
123: int(2)
124: [99]=>
125: int(3)
126: }
127:
128: -- Iteration 4 --
129: array(3) {
130: ["one"]=>
131: int(1)
132: [0]=>
133: int(2)
134: [99]=>
135: int(3)
136: }
137:
138: -- Iteration 5 --
139: array(3) {
140: ["one"]=>
141: int(1)
142: [0]=>
143: int(2)
144: [99]=>
145: int(3)
146: }
147:
148: -- Iteration 6 --
149: array(3) {
150: ["one"]=>
151: int(1)
152: [0]=>
153: int(2)
154: [99]=>
155: int(3)
156: }
157:
158: -- Iteration 7 --
159: array(3) {
160: ["one"]=>
161: int(1)
162: [0]=>
163: int(2)
164: [99]=>
165: int(3)
166: }
167:
168: -- Iteration 8 --
169: array(3) {
170: ["one"]=>
171: int(1)
172: [0]=>
173: int(2)
174: [99]=>
175: int(3)
176: }
177:
178: -- Iteration 9 --
179: array(3) {
180: ["one"]=>
181: int(1)
182: [0]=>
183: int(2)
184: [99]=>
185: int(3)
186: }
187:
188: -- Iteration 10 --
189: array(3) {
190: ["one"]=>
191: int(1)
192: [0]=>
193: int(2)
194: [1]=>
195: int(3)
196: }
197:
198: -- Iteration 11 --
199: array(3) {
200: ["one"]=>
201: int(1)
202: [0]=>
203: int(2)
204: [1]=>
205: int(3)
206: }
207:
208: -- Iteration 12 --
209: array(3) {
210: ["one"]=>
211: int(1)
212: [0]=>
213: int(2)
214: [99]=>
215: int(3)
216: }
217:
218: -- Iteration 13 --
219: array(3) {
220: ["one"]=>
221: int(1)
222: [0]=>
223: int(2)
224: [1]=>
225: int(3)
226: }
227:
228: -- Iteration 14 --
229: array(3) {
230: ["one"]=>
231: int(1)
232: [0]=>
233: int(2)
234: [99]=>
235: int(3)
236: }
237:
238: -- Iteration 15 --
239: array(3) {
240: ["one"]=>
241: int(1)
242: [0]=>
243: int(2)
244: [1]=>
245: int(3)
246: }
247:
248: -- Iteration 16 --
249: array(3) {
250: ["one"]=>
251: int(1)
252: [0]=>
253: int(2)
254: [1]=>
255: int(3)
256: }
257:
258: -- Iteration 17 --
259: array(3) {
260: ["one"]=>
261: int(1)
262: [0]=>
263: int(2)
264: [1]=>
265: int(3)
266: }
267:
268: -- Iteration 18 --
269:
270: Warning: array_slice() expects parameter 4 to be boolean, array given in %s on line %d
271: NULL
272:
273: -- Iteration 19 --
274: array(3) {
275: ["one"]=>
276: int(1)
277: [0]=>
278: int(2)
279: [99]=>
280: int(3)
281: }
282:
283: -- Iteration 20 --
284: array(3) {
285: ["one"]=>
286: int(1)
287: [0]=>
288: int(2)
289: [99]=>
290: int(3)
291: }
292:
293: -- Iteration 21 --
294: array(3) {
295: ["one"]=>
296: int(1)
297: [0]=>
298: int(2)
299: [99]=>
300: int(3)
301: }
302:
303: -- Iteration 22 --
304:
305: Warning: array_slice() expects parameter 4 to be boolean, object given in %s on line %d
306: NULL
307:
308: -- Iteration 23 --
309: array(3) {
310: ["one"]=>
311: int(1)
312: [0]=>
313: int(2)
314: [1]=>
315: int(3)
316: }
317:
318: -- Iteration 24 --
319: array(3) {
320: ["one"]=>
321: int(1)
322: [0]=>
323: int(2)
324: [1]=>
325: int(3)
326: }
327: Done
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>