1--TEST-- 2Test array_shift() function : usage variations - Pass array with different data types as keys 3--FILE-- 4<?php 5/* Prototype : mixed array_shift(array &$stack) 6 * Description: Pops an element off the beginning of the array 7 * Source code: ext/standard/array.c 8 */ 9 10/* 11 * Pass arrays with different data types as keys to test how array_shift() re-assigns keys 12 */ 13 14echo "*** Testing array_shift() : usage variations ***\n"; 15 16//get an unset variable 17$unset_var = 10; 18unset ($unset_var); 19 20// heredoc string 21$heredoc = <<<EOT 22hello world 23EOT; 24 25// unexpected values to be passed to $stack argument 26$inputs = array( 27 28 // int data 29/*1*/ 'int' => array( 30 0 => 'zero', 31 1 => 'one', 32 12345 => 'positive', 33 -2345 => 'negative', 34 ), 35 36 // float data 37/*2*/ 'float' => array( 38 10.5 => 'positive', 39 -10.5 => 'negative', 40 .5 => 'half', 41 ), 42 43/*3*/ 'extreme floats' => array( 44 12.3456789000e10 => 'large', 45 12.3456789000E-10 => 'small', 46 ), 47 48 // null data 49/*4*/ 'null uppercase' => array( 50 NULL => 'null 1', 51 ), 52 53/*5*/ 'null lowercase' => array( 54 null => 'null 2', 55 ), 56 57 // boolean data 58/*6*/ 'bool lowercase' => array( 59 true => 'lowert', 60 false => 'lowerf', 61 ), 62 63/*7*/ 'bool uppercase' => array( 64 TRUE => 'uppert', 65 FALSE => 'upperf', 66 ), 67 68 // empty data 69/*8*/ 'empty double quotes' => array( 70 "" => 'emptyd', 71 ), 72 73/*9*/ 'empty single quotes' => array( 74 '' => 'emptys', 75 ), 76 77 // string data 78/*10*/ 'string' => array( 79 "stringd" => 'stringd', 80 'strings' => 'strings', 81 $heredoc => 'stringh', 82 ), 83 84 // undefined data 85/*11*/ 'undefined' => array( 86 @$undefined_var => 'undefined', 87 ), 88 89 // unset data 90/*12*/ 'unset' => array( 91 @$unset_var => 'unset', 92 ), 93); 94 95// loop through each element of $inputs to check the behavior of array_shift() 96$iterator = 1; 97foreach($inputs as $key => $input) { 98 echo "\n-- Iteration $iterator : $key data --\n"; 99 var_dump( array_shift($input) ); 100 var_dump($input); 101 $iterator++; 102}; 103 104echo "Done"; 105?> 106--EXPECTF-- 107*** Testing array_shift() : usage variations *** 108 109-- Iteration 1 : int data -- 110string(4) "zero" 111array(3) { 112 [0]=> 113 string(3) "one" 114 [1]=> 115 string(8) "positive" 116 [2]=> 117 string(8) "negative" 118} 119 120-- Iteration 2 : float data -- 121string(8) "positive" 122array(2) { 123 [0]=> 124 string(8) "negative" 125 [1]=> 126 string(4) "half" 127} 128 129-- Iteration 3 : extreme floats data -- 130string(5) "large" 131array(1) { 132 [0]=> 133 string(5) "small" 134} 135 136-- Iteration 4 : null uppercase data -- 137string(6) "null 1" 138array(0) { 139} 140 141-- Iteration 5 : null lowercase data -- 142string(6) "null 2" 143array(0) { 144} 145 146-- Iteration 6 : bool lowercase data -- 147string(6) "lowert" 148array(1) { 149 [0]=> 150 string(6) "lowerf" 151} 152 153-- Iteration 7 : bool uppercase data -- 154string(6) "uppert" 155array(1) { 156 [0]=> 157 string(6) "upperf" 158} 159 160-- Iteration 8 : empty double quotes data -- 161string(6) "emptyd" 162array(0) { 163} 164 165-- Iteration 9 : empty single quotes data -- 166string(6) "emptys" 167array(0) { 168} 169 170-- Iteration 10 : string data -- 171string(7) "stringd" 172array(2) { 173 ["strings"]=> 174 string(7) "strings" 175 ["hello world"]=> 176 string(7) "stringh" 177} 178 179-- Iteration 11 : undefined data -- 180string(9) "undefined" 181array(0) { 182} 183 184-- Iteration 12 : unset data -- 185string(5) "unset" 186array(0) { 187} 188Done