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