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