1--TEST-- 2Test array_slice() function : usage variations - Pass different data types as $length arg 3--SKIPIF-- 4<?php if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platform only"); ?> 5--FILE-- 6<?php 7/* Prototype : array array_slice(array $input, int $offset [, int $length [, bool $preserve_keys]]) 8 * Description: Returns elements specified by offset and length 9 * Source code: ext/standard/array.c 10 */ 11 12/* 13 * Pass different data types as $length argument to array_slice to test behaviour 14 */ 15 16echo "*** Testing array_slice() : usage variations ***\n"; 17 18// Initialise function arguments not being substituted 19$input_array = array('one' => 1, 2, 'three' => 3, 4); 20$offset = 2; 21 22//get an unset variable 23$unset_var = 10; 24unset ($unset_var); 25 26// heredoc string 27$heredoc = <<<EOT 28hello world 29EOT; 30 31// unexpected values to be passed to $length argument 32$inputs = array( 33 34 // int data 35/*1*/ 0, 36 1, 37 12345, 38 -2345, 39 40 // float data 41/*5*/ 10.5, 42 -10.5, 43 12.3456789000e10, 44 12.3456789000E-10, 45 .5, 46 47 // null data 48/*10*/ NULL, 49 null, 50 51 // boolean data 52/*12*/ true, 53 false, 54 TRUE, 55 FALSE, 56 57 // empty data 58/*16*/ "", 59 '', 60 array(), 61 62 // string data 63/*19*/ "string", 64 'string', 65 $heredoc, 66 67 // undefined data 68/*22*/ @$undefined_var, 69 70 // unset data 71/*23*/ @$unset_var, 72); 73 74// loop through each element of $inputs to check the behavior of array_slice 75$iterator = 1; 76foreach($inputs as $input) { 77 echo "\n-- Iteration $iterator --\n"; 78 var_dump( array_slice($input_array, $offset, $input) ); 79 $iterator++; 80}; 81 82echo "Done"; 83?> 84 85--EXPECTF-- 86*** Testing array_slice() : usage variations *** 87 88-- Iteration 1 -- 89array(0) { 90} 91 92-- Iteration 2 -- 93array(1) { 94 ["three"]=> 95 int(3) 96} 97 98-- Iteration 3 -- 99array(2) { 100 ["three"]=> 101 int(3) 102 [0]=> 103 int(4) 104} 105 106-- Iteration 4 -- 107array(0) { 108} 109 110-- Iteration 5 -- 111array(2) { 112 ["three"]=> 113 int(3) 114 [0]=> 115 int(4) 116} 117 118-- Iteration 6 -- 119array(0) { 120} 121 122-- Iteration 7 -- 123array(2) { 124 ["three"]=> 125 int(3) 126 [0]=> 127 int(4) 128} 129 130-- Iteration 8 -- 131array(0) { 132} 133 134-- Iteration 9 -- 135array(0) { 136} 137 138-- Iteration 10 -- 139array(2) { 140 ["three"]=> 141 int(3) 142 [0]=> 143 int(4) 144} 145 146-- Iteration 11 -- 147array(2) { 148 ["three"]=> 149 int(3) 150 [0]=> 151 int(4) 152} 153 154-- Iteration 12 -- 155array(1) { 156 ["three"]=> 157 int(3) 158} 159 160-- Iteration 13 -- 161array(0) { 162} 163 164-- Iteration 14 -- 165array(1) { 166 ["three"]=> 167 int(3) 168} 169 170-- Iteration 15 -- 171array(0) { 172} 173 174-- Iteration 16 -- 175array(0) { 176} 177 178-- Iteration 17 -- 179array(0) { 180} 181 182-- Iteration 18 -- 183array(0) { 184} 185 186-- Iteration 19 -- 187array(0) { 188} 189 190-- Iteration 20 -- 191array(0) { 192} 193 194-- Iteration 21 -- 195array(0) { 196} 197 198-- Iteration 22 -- 199array(2) { 200 ["three"]=> 201 int(3) 202 [0]=> 203 int(4) 204} 205 206-- Iteration 23 -- 207array(2) { 208 ["three"]=> 209 int(3) 210 [0]=> 211 int(4) 212} 213Done