1--TEST-- 2Test array_values() function : usage variations - arrays of different data types 3--FILE-- 4<?php 5/* Prototype : array array_values(array $input) 6 * Description: Return just the values from the input array 7 * Source code: ext/standard/array.c 8 */ 9 10/* 11 * Pass arrays of different data types as $input argument to array_values() to test behaviour 12 */ 13 14echo "*** Testing array_values() : usage variations ***\n"; 15 16//get an unset variable 17$unset_var = 10; 18unset ($unset_var); 19 20// get a class 21class classA 22{ 23 public function __toString() { 24 return "Class A object"; 25 } 26} 27 28// heredoc string 29$heredoc = <<<EOT 30hello world 31EOT; 32 33// get a resource variable 34$fp = fopen(__FILE__, "r"); 35 36// arrays of different data types to be passed as $input 37$inputs = array( 38 39 // int data 40/*1*/ 'int' => array( 41 0, 42 1, 43 12345, 44 -2345, 45 ), 46 47 // float data 48/*2*/ 'float' => array( 49 10.5, 50 -10.5, 51 12.3456789000e10, 52 12.3456789000E-10, 53 .5, 54 ), 55 56 // null data 57/*3*/ 'null' => array( 58 NULL, 59 null, 60 ), 61 62 // boolean data 63/*4*/ 'bool' => array( 64 true, 65 false, 66 TRUE, 67 FALSE, 68 ), 69 70 // empty data 71/*5*/ 'empty string' => array( 72 "", 73 '', 74 ), 75 76/*6*/ 'empty array' => array( 77 ), 78 79 // string data 80/*7*/ 'string' => array( 81 "string", 82 'string', 83 $heredoc, 84 ), 85 86 // object data 87/*8*/ 'object' => array( 88 new classA(), 89 ), 90 91 // undefined data 92/*9*/ 'undefined' => array( 93 @$undefined_var, 94 ), 95 96 // unset data 97/*10*/ 'unset' => array( 98 @$unset_var, 99 ), 100 101 // resource variable 102/*11*/ 'resource' => array( 103 $fp 104 ), 105); 106 107// loop through each element of $inputs to check the behavior of array_values() 108$iterator = 1; 109foreach($inputs as $key => $input) { 110 echo "\n-- Iteration $iterator: $key data --\n"; 111 var_dump( array_values($input) ); 112 $iterator++; 113}; 114 115fclose($fp); 116 117echo "Done"; 118?> 119--EXPECTF-- 120*** Testing array_values() : usage variations *** 121 122-- Iteration 1: int data -- 123array(4) { 124 [0]=> 125 int(0) 126 [1]=> 127 int(1) 128 [2]=> 129 int(12345) 130 [3]=> 131 int(-2345) 132} 133 134-- Iteration 2: float data -- 135array(5) { 136 [0]=> 137 float(10.5) 138 [1]=> 139 float(-10.5) 140 [2]=> 141 float(123456789000) 142 [3]=> 143 float(1.23456789E-9) 144 [4]=> 145 float(0.5) 146} 147 148-- Iteration 3: null data -- 149array(2) { 150 [0]=> 151 NULL 152 [1]=> 153 NULL 154} 155 156-- Iteration 4: bool data -- 157array(4) { 158 [0]=> 159 bool(true) 160 [1]=> 161 bool(false) 162 [2]=> 163 bool(true) 164 [3]=> 165 bool(false) 166} 167 168-- Iteration 5: empty string data -- 169array(2) { 170 [0]=> 171 string(0) "" 172 [1]=> 173 string(0) "" 174} 175 176-- Iteration 6: empty array data -- 177array(0) { 178} 179 180-- Iteration 7: string data -- 181array(3) { 182 [0]=> 183 string(6) "string" 184 [1]=> 185 string(6) "string" 186 [2]=> 187 string(11) "hello world" 188} 189 190-- Iteration 8: object data -- 191array(1) { 192 [0]=> 193 object(classA)#%d (0) { 194 } 195} 196 197-- Iteration 9: undefined data -- 198array(1) { 199 [0]=> 200 NULL 201} 202 203-- Iteration 10: unset data -- 204array(1) { 205 [0]=> 206 NULL 207} 208 209-- Iteration 11: resource data -- 210array(1) { 211 [0]=> 212 resource(%d) of type (stream) 213} 214Done 215