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 120--EXPECTF-- 121*** Testing array_values() : usage variations *** 122 123-- Iteration 1: int data -- 124array(4) { 125 [0]=> 126 int(0) 127 [1]=> 128 int(1) 129 [2]=> 130 int(12345) 131 [3]=> 132 int(-2345) 133} 134 135-- Iteration 2: float data -- 136array(5) { 137 [0]=> 138 float(10.5) 139 [1]=> 140 float(-10.5) 141 [2]=> 142 float(123456789000) 143 [3]=> 144 float(1.23456789E-9) 145 [4]=> 146 float(0.5) 147} 148 149-- Iteration 3: null data -- 150array(2) { 151 [0]=> 152 NULL 153 [1]=> 154 NULL 155} 156 157-- Iteration 4: bool data -- 158array(4) { 159 [0]=> 160 bool(true) 161 [1]=> 162 bool(false) 163 [2]=> 164 bool(true) 165 [3]=> 166 bool(false) 167} 168 169-- Iteration 5: empty string data -- 170array(2) { 171 [0]=> 172 string(0) "" 173 [1]=> 174 string(0) "" 175} 176 177-- Iteration 6: empty array data -- 178array(0) { 179} 180 181-- Iteration 7: string data -- 182array(3) { 183 [0]=> 184 string(6) "string" 185 [1]=> 186 string(6) "string" 187 [2]=> 188 string(11) "hello world" 189} 190 191-- Iteration 8: object data -- 192array(1) { 193 [0]=> 194 object(classA)#%d (0) { 195 } 196} 197 198-- Iteration 9: undefined data -- 199array(1) { 200 [0]=> 201 NULL 202} 203 204-- Iteration 10: unset data -- 205array(1) { 206 [0]=> 207 NULL 208} 209 210-- Iteration 11: resource data -- 211array(1) { 212 [0]=> 213 resource(%d) of type (stream) 214} 215Done