1--TEST-- 2Test array_shift() function 3--FILE-- 4<?php 5 6$empty_array = array(); 7$number = 5; 8$str = "abc"; 9 10 11/* Various combinations of arrays to be used for the test */ 12$mixed_array = array( 13 array(), 14 array( 1,2,3,4,5,6,7,8,9 ), 15 array( "One", "_Two", "Three", "Four", "Five" ), 16 array( 6, "six", 7, "seven", 8, "eight", 9, "nine" ), 17 array( "a" => "aaa", "A" => "AAA", "c" => "ccc", "d" => "ddd", "e" => "eee" ), 18 array( "1" => "one", "2" => "two", "3" => "three", "4" => "four", "5" => "five" ), 19 array( 1 => "one", 2 => "two", 3 => 7, 4 => "four", 5 => "five" ), 20 array( "f" => "fff", "1" => "one", 4 => 6, "" => "blank", 2 => "float", "F" => "FFF", 21 "blank" => "", 3 => 3.7, 5 => 7, 6 => 8.6, '5' => "Five", "4name" => "jonny", "a" => NULL, NULL => 3 ), 22 array( 12, "name", 'age', '45' ), 23 array( array("oNe", "tWo", 4), array(10, 20, 30, 40, 50), array() ), 24 array( "one" => 1, "one" => 2, "three" => 3, 3, 4, 3 => 33, 4 => 44, 5, 6, 25 5 => 57, "5.4" => 554, "5.7" => 557 ) 26); 27 28/* Testing Error Conditions */ 29echo "\n*** Testing Error Conditions ***\n"; 30 31/* Empty Array as argument */ 32var_dump( array_shift($empty_array) ); 33 34/* Loop to test normal functionality with different arrays inputs */ 35echo "\n*** Testing with various array inputs ***\n"; 36 37$counter = 1; 38foreach( $mixed_array as $sub_array ) { 39 echo "\n-- Input Array for Iteration $counter is --\n"; 40 var_dump( $sub_array ); 41 echo "\nOutput after shift is :\n"; 42 var_dump( array_shift($sub_array) ); 43 $counter++; 44} 45 46/*Checking for internal array pointer beint reset when shift is called */ 47 48echo"\n*** Checking for internal array pointer being reset when shift is called ***\n"; 49 50echo "\nCurrent Element is :"; 51var_dump( current($mixed_array[1]) ); 52 53echo "\nNext Element is :"; 54var_dump( next($mixed_array[1]) ); 55 56echo "\nNext Element is :"; 57var_dump( next($mixed_array[1]) ); 58 59echo "\nshifted Element is :"; 60var_dump( array_shift($mixed_array[1]) ); 61 62echo "\nCurrent Element after shift operation is:"; 63var_dump( current($mixed_array[1]) ); 64 65echo"Done"; 66?> 67--EXPECT-- 68*** Testing Error Conditions *** 69NULL 70 71*** Testing with various array inputs *** 72 73-- Input Array for Iteration 1 is -- 74array(0) { 75} 76 77Output after shift is : 78NULL 79 80-- Input Array for Iteration 2 is -- 81array(9) { 82 [0]=> 83 int(1) 84 [1]=> 85 int(2) 86 [2]=> 87 int(3) 88 [3]=> 89 int(4) 90 [4]=> 91 int(5) 92 [5]=> 93 int(6) 94 [6]=> 95 int(7) 96 [7]=> 97 int(8) 98 [8]=> 99 int(9) 100} 101 102Output after shift is : 103int(1) 104 105-- Input Array for Iteration 3 is -- 106array(5) { 107 [0]=> 108 string(3) "One" 109 [1]=> 110 string(4) "_Two" 111 [2]=> 112 string(5) "Three" 113 [3]=> 114 string(4) "Four" 115 [4]=> 116 string(4) "Five" 117} 118 119Output after shift is : 120string(3) "One" 121 122-- Input Array for Iteration 4 is -- 123array(8) { 124 [0]=> 125 int(6) 126 [1]=> 127 string(3) "six" 128 [2]=> 129 int(7) 130 [3]=> 131 string(5) "seven" 132 [4]=> 133 int(8) 134 [5]=> 135 string(5) "eight" 136 [6]=> 137 int(9) 138 [7]=> 139 string(4) "nine" 140} 141 142Output after shift is : 143int(6) 144 145-- Input Array for Iteration 5 is -- 146array(5) { 147 ["a"]=> 148 string(3) "aaa" 149 ["A"]=> 150 string(3) "AAA" 151 ["c"]=> 152 string(3) "ccc" 153 ["d"]=> 154 string(3) "ddd" 155 ["e"]=> 156 string(3) "eee" 157} 158 159Output after shift is : 160string(3) "aaa" 161 162-- Input Array for Iteration 6 is -- 163array(5) { 164 [1]=> 165 string(3) "one" 166 [2]=> 167 string(3) "two" 168 [3]=> 169 string(5) "three" 170 [4]=> 171 string(4) "four" 172 [5]=> 173 string(4) "five" 174} 175 176Output after shift is : 177string(3) "one" 178 179-- Input Array for Iteration 7 is -- 180array(5) { 181 [1]=> 182 string(3) "one" 183 [2]=> 184 string(3) "two" 185 [3]=> 186 int(7) 187 [4]=> 188 string(4) "four" 189 [5]=> 190 string(4) "five" 191} 192 193Output after shift is : 194string(3) "one" 195 196-- Input Array for Iteration 8 is -- 197array(12) { 198 ["f"]=> 199 string(3) "fff" 200 [1]=> 201 string(3) "one" 202 [4]=> 203 int(6) 204 [""]=> 205 int(3) 206 [2]=> 207 string(5) "float" 208 ["F"]=> 209 string(3) "FFF" 210 ["blank"]=> 211 string(0) "" 212 [3]=> 213 float(3.7) 214 [5]=> 215 string(4) "Five" 216 [6]=> 217 float(8.6) 218 ["4name"]=> 219 string(5) "jonny" 220 ["a"]=> 221 NULL 222} 223 224Output after shift is : 225string(3) "fff" 226 227-- Input Array for Iteration 9 is -- 228array(4) { 229 [0]=> 230 int(12) 231 [1]=> 232 string(4) "name" 233 [2]=> 234 string(3) "age" 235 [3]=> 236 string(2) "45" 237} 238 239Output after shift is : 240int(12) 241 242-- Input Array for Iteration 10 is -- 243array(3) { 244 [0]=> 245 array(3) { 246 [0]=> 247 string(3) "oNe" 248 [1]=> 249 string(3) "tWo" 250 [2]=> 251 int(4) 252 } 253 [1]=> 254 array(5) { 255 [0]=> 256 int(10) 257 [1]=> 258 int(20) 259 [2]=> 260 int(30) 261 [3]=> 262 int(40) 263 [4]=> 264 int(50) 265 } 266 [2]=> 267 array(0) { 268 } 269} 270 271Output after shift is : 272array(3) { 273 [0]=> 274 string(3) "oNe" 275 [1]=> 276 string(3) "tWo" 277 [2]=> 278 int(4) 279} 280 281-- Input Array for Iteration 11 is -- 282array(10) { 283 ["one"]=> 284 int(2) 285 ["three"]=> 286 int(3) 287 [0]=> 288 int(3) 289 [1]=> 290 int(4) 291 [3]=> 292 int(33) 293 [4]=> 294 int(44) 295 [5]=> 296 int(57) 297 [6]=> 298 int(6) 299 ["5.4"]=> 300 int(554) 301 ["5.7"]=> 302 int(557) 303} 304 305Output after shift is : 306int(2) 307 308*** Checking for internal array pointer being reset when shift is called *** 309 310Current Element is :int(1) 311 312Next Element is :int(2) 313 314Next Element is :int(3) 315 316shifted Element is :int(1) 317 318Current Element after shift operation is:int(2) 319Done 320