Return to array_slice_variation4.phpt CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / standard / tests / array |
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