1--TEST-- 2Test array_intersect() function : usage variations - different arrays for 'arr1' argument 3--FILE-- 4<?php 5/* Prototype : array array_intersect(array $arr1, array $arr2 [, array $...]) 6 * Description: Returns the entries of arr1 that have values which are present in all the other arguments 7 * Source code: ext/standard/array.c 8*/ 9 10/* 11* Passing different types of arrays to $arr1 argument and testing whether 12* array_intersect() behaves in expected way with the other arguments passed to the function 13* The $arr2 argument is a fixed array. 14*/ 15 16echo "*** Testing array_intersect() : Passing different types of arrays to \$arr1 argument ***\n"; 17 18/* Different heredoc strings passed as argument to $arr1 */ 19// heredoc with blank line 20$blank_line = <<<EOT 21 22 23EOT; 24 25// heredoc with multiline string 26$multiline_string = <<<EOT 27hello world 28The big brown fox jumped over; 29the lazy dog 30This is a double quoted string 31EOT; 32 33// heredoc with different whitespaces 34$diff_whitespaces = <<<EOT 35hello\r world\t 361111\t\t != 2222\v\v 37heredoc\ndouble quoted string. with\vdifferent\fwhite\vspaces 38EOT; 39 40// heredoc with quoted strings and numeric values 41$numeric_string = <<<EOT 4211 < 12. 123 >22 43'single quoted string' 44"double quoted string" 452222 != 1111.\t 0000 = 0000\n 46EOT; 47 48// arrays to be passed to $arr1 argument 49$arrays = array ( 50/*1*/ array(1, 2), // array with default keys and numeric values 51 array(1.1, 2.2), // array with default keys & float values 52 array(false,true), // array with default keys and boolean values 53 array(), // empty array 54/*5*/ array(NULL), // array with NULL 55 array("a\v\f","aaaa\r","b","b\tbbb","c","\[\]\!\@\#\$\%\^\&\*\(\)\{\}"), // array with double quoted strings 56 array('a\v\f','aaaa\r','b','b\tbbb','c','\[\]\!\@\#\$\%\^\&\*\(\)\{\}'), // array with single quoted strings 57 array($blank_line, $multiline_string, $diff_whitespaces, $numeric_string), // array with heredocs 58 59 // associative arrays 60/*9*/ array(1 => "one", 2 => "two", 3 => "three"), // explicit numeric keys, string values 61 array("one" => 1, "two" => 2, "three" => 3 ), // string keys & numeric values 62 array( 1 => 10, 2 => 20, 4 => 40, 3 => 30), // explicit numeric keys and numeric values 63 array( "one" => "ten", "two" => "twenty", "three" => "thirty"), // string key/value 64 array("one" => 1, 2 => "two", 4 => "four"), //mixed 65 66 // associative array, containing null/empty/boolean values as key/value 67/*14*/ array(NULL => "NULL", null => "null", "NULL" => NULL, "null" => null), 68 array(true => "true", false => "false", "false" => false, "true" => true), 69 array("" => "emptyd", '' => 'emptys', "emptyd" => "", 'emptys' => ''), 70 array(1 => '', 2 => "", 3 => NULL, 4 => null, 5 => false, 6 => true), 71 array('' => 1, "" => 2, NULL => 3, null => 4, false => 5, true => 6), 72 73 // array with repetative keys 74/*19*/ array("One" => 1, "two" => 2, "One" => 10, "two" => 20, "three" => 3) 75); 76 77 78// array to be passsed to $arr2 argument 79$arr2 = array ( 80 1, 1.1, "hello", "one", NULL, 2, 81 'world', true, false, false => 5, 'aaaa\r', "aaaa\r", 82 $numeric_string, $diff_whitespaces, 83 "one" => "ten", 4 => "four", "two" => 2, 2 => "two", 84 '', null => "null", '' => 'emptys' 85); 86 87// loop through each sub-array within $arrrays to check the behavior of array_intersect() 88$iterator = 1; 89foreach($arrays as $arr1) { 90 echo "-- Iterator $iterator --\n"; 91 92 // Calling array_intersect() with default arguments 93 var_dump( array_intersect($arr1, $arr2) ); 94 95 // Calling array_intersect() with more arguments. 96 // additional argument passed is the same as $arr1 argument 97 var_dump( array_intersect($arr1, $arr2, $arr1) ); 98 $iterator++; 99} 100 101echo "Done"; 102?> 103--EXPECTF-- 104*** Testing array_intersect() : Passing different types of arrays to $arr1 argument *** 105-- Iterator 1 -- 106array(2) { 107 [0]=> 108 int(1) 109 [1]=> 110 int(2) 111} 112array(2) { 113 [0]=> 114 int(1) 115 [1]=> 116 int(2) 117} 118-- Iterator 2 -- 119array(1) { 120 [0]=> 121 float(1.1) 122} 123array(1) { 124 [0]=> 125 float(1.1) 126} 127-- Iterator 3 -- 128array(2) { 129 [0]=> 130 bool(false) 131 [1]=> 132 bool(true) 133} 134array(2) { 135 [0]=> 136 bool(false) 137 [1]=> 138 bool(true) 139} 140-- Iterator 4 -- 141array(0) { 142} 143array(0) { 144} 145-- Iterator 5 -- 146array(1) { 147 [0]=> 148 NULL 149} 150array(1) { 151 [0]=> 152 NULL 153} 154-- Iterator 6 -- 155array(1) { 156 [1]=> 157 string(5) "aaaa 157" 158} 159array(1) { 160 [1]=> 161 string(5) "aaaa 161" 162} 163-- Iterator 7 -- 164array(1) { 165 [1]=> 166 string(6) "aaaa\r" 167} 168array(1) { 169 [1]=> 170 string(6) "aaaa\r" 171} 172-- Iterator 8 -- 173array(2) { 174 [2]=> 175 string(88) "hello 175 world 1761111 != 2222 177heredoc 178double quoted string. withdifferentwhitespaces" 179 [3]=> 180 string(90) "11 < 12. 123 >22 181'single quoted string' 182"double quoted string" 1832222 != 1111. 0000 = 0000 184" 185} 186array(2) { 187 [2]=> 188 string(88) "hello 188 world 1891111 != 2222 190heredoc 191double quoted string. withdifferentwhitespaces" 192 [3]=> 193 string(90) "11 < 12. 123 >22 194'single quoted string' 195"double quoted string" 1962222 != 1111. 0000 = 0000 197" 198} 199-- Iterator 9 -- 200array(2) { 201 [1]=> 202 string(3) "one" 203 [2]=> 204 string(3) "two" 205} 206array(2) { 207 [1]=> 208 string(3) "one" 209 [2]=> 210 string(3) "two" 211} 212-- Iterator 10 -- 213array(2) { 214 ["one"]=> 215 int(1) 216 ["two"]=> 217 int(2) 218} 219array(2) { 220 ["one"]=> 221 int(1) 222 ["two"]=> 223 int(2) 224} 225-- Iterator 11 -- 226array(0) { 227} 228array(0) { 229} 230-- Iterator 12 -- 231array(1) { 232 ["one"]=> 233 string(3) "ten" 234} 235array(1) { 236 ["one"]=> 237 string(3) "ten" 238} 239-- Iterator 13 -- 240array(3) { 241 ["one"]=> 242 int(1) 243 [2]=> 244 string(3) "two" 245 [4]=> 246 string(4) "four" 247} 248array(3) { 249 ["one"]=> 250 int(1) 251 [2]=> 252 string(3) "two" 253 [4]=> 254 string(4) "four" 255} 256-- Iterator 14 -- 257array(2) { 258 ["NULL"]=> 259 NULL 260 ["null"]=> 261 NULL 262} 263array(2) { 264 ["NULL"]=> 265 NULL 266 ["null"]=> 267 NULL 268} 269-- Iterator 15 -- 270array(2) { 271 ["false"]=> 272 bool(false) 273 ["true"]=> 274 bool(true) 275} 276array(2) { 277 ["false"]=> 278 bool(false) 279 ["true"]=> 280 bool(true) 281} 282-- Iterator 16 -- 283array(3) { 284 [""]=> 285 string(6) "emptys" 286 ["emptyd"]=> 287 string(0) "" 288 ["emptys"]=> 289 string(0) "" 290} 291array(3) { 292 [""]=> 293 string(6) "emptys" 294 ["emptyd"]=> 295 string(0) "" 296 ["emptys"]=> 297 string(0) "" 298} 299-- Iterator 17 -- 300array(6) { 301 [1]=> 302 string(0) "" 303 [2]=> 304 string(0) "" 305 [3]=> 306 NULL 307 [4]=> 308 NULL 309 [5]=> 310 bool(false) 311 [6]=> 312 bool(true) 313} 314array(6) { 315 [1]=> 316 string(0) "" 317 [2]=> 318 string(0) "" 319 [3]=> 320 NULL 321 [4]=> 322 NULL 323 [5]=> 324 bool(false) 325 [6]=> 326 bool(true) 327} 328-- Iterator 18 -- 329array(1) { 330 [0]=> 331 int(5) 332} 333array(1) { 334 [0]=> 335 int(5) 336} 337-- Iterator 19 -- 338array(0) { 339} 340array(0) { 341} 342Done 343