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