1--TEST-- 2Test array_intersect() function : usage variations - assoc array with diff values for 'arr2' 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 * Testing the functionality of array_intersect() by passing different 12 * associative arrays having different possible values to $arr2 argument. 13 * The $arr1 argument is a fixed array. 14*/ 15 16echo "*** Testing array_intersect() : assoc array with diff values to \$arr2 argument ***\n"; 17 18// get an unset variable 19$unset_var = 10; 20unset ($unset_var); 21 22// get a resource variable 23$fp = fopen(__FILE__, "r"); 24 25// get a class 26class classA 27{ 28 public function __toString(){ 29 return "Class A object"; 30 } 31} 32 33// get a heredoc string 34$heredoc = <<<EOT 35Hello world 36EOT; 37 38// different variations of associative arrays to be passed to $arr2 argument 39$arrays = array ( 40 41 // empty array 42/*1*/ array(), 43 44 // arrays with integer values 45 array('0' => 0), 46 array("1" => 1), 47 array("one" => 1, 'two' => 2, "three" => 3, 4 => 4), 48 49 // arrays with float values 50/*5*/ array("float" => 2.3333), 51 array("f1" => 1.2, 'f2' => 3.33, 3 => 4.89999922839999, 'f4' => 33333333.333333), 52 53 // arrays with string values 54/*7*/ array(111 => "\tHello", "red" => "col\tor", 2 => "\v\fworld", 3.3 => "pen\n"), 55 array(111 => '\tHello', "red" => 'col\tor', 2 => '\v\fworld', 3.3 => 'pen\n'), 56 array(1 => "hello", "heredoc" => $heredoc), 57 58 // array with object, unset variable and resource variable 59/*10*/ array(11 => new classA(), "unset" => @$unset_var, "resource" => $fp), 60 61 // array with mixed values 62/*11*/ array(1 => 'hello', 2 => new classA(), 222 => "fruit", 63 'resource' => $fp, "int" => 133, "float" => 444.432, 64 "unset" => @$unset_var, "heredoc" => $heredoc) 65); 66 67// array to be passsed to $arr1 argument 68$arr1 = array(1, 2, 1.2, 2.3333, "col\tor", '\v\fworld', $fp, 69 "Hello world", $heredoc, new classA(), 444.432, "fruit"); 70 71// loop through each sub-array within $arrrays to check the behavior of array_intersect() 72$iterator = 1; 73foreach($arrays as $arr2) { 74 echo "-- Iterator $iterator --\n"; 75 76 // Calling array_intersect() with default arguments 77 var_dump( array_intersect($arr1, $arr2) ); 78 79 // Calling array_intersect() with more arguments. 80 // additional argument passed is the same as $arr1 argument 81 var_dump( array_intersect($arr1, $arr2, $arr1) ); 82 $iterator++; 83} 84 85// close the file resource used 86fclose($fp); 87 88echo "Done"; 89?> 90--EXPECTF-- 91*** Testing array_intersect() : assoc array with diff values to $arr2 argument *** 92-- Iterator 1 -- 93array(0) { 94} 95array(0) { 96} 97-- Iterator 2 -- 98array(0) { 99} 100array(0) { 101} 102-- Iterator 3 -- 103array(1) { 104 [0]=> 105 int(1) 106} 107array(1) { 108 [0]=> 109 int(1) 110} 111-- Iterator 4 -- 112array(2) { 113 [0]=> 114 int(1) 115 [1]=> 116 int(2) 117} 118array(2) { 119 [0]=> 120 int(1) 121 [1]=> 122 int(2) 123} 124-- Iterator 5 -- 125array(1) { 126 [3]=> 127 float(2.3333) 128} 129array(1) { 130 [3]=> 131 float(2.3333) 132} 133-- Iterator 6 -- 134array(1) { 135 [2]=> 136 float(1.2) 137} 138array(1) { 139 [2]=> 140 float(1.2) 141} 142-- Iterator 7 -- 143array(1) { 144 [4]=> 145 string(6) "col or" 146} 147array(1) { 148 [4]=> 149 string(6) "col or" 150} 151-- Iterator 8 -- 152array(1) { 153 [5]=> 154 string(9) "\v\fworld" 155} 156array(1) { 157 [5]=> 158 string(9) "\v\fworld" 159} 160-- Iterator 9 -- 161array(2) { 162 [7]=> 163 string(11) "Hello world" 164 [8]=> 165 string(11) "Hello world" 166} 167array(2) { 168 [7]=> 169 string(11) "Hello world" 170 [8]=> 171 string(11) "Hello world" 172} 173-- Iterator 10 -- 174array(2) { 175 [6]=> 176 resource(%d) of type (stream) 177 [9]=> 178 object(classA)#%d (0) { 179 } 180} 181array(2) { 182 [6]=> 183 resource(%d) of type (stream) 184 [9]=> 185 object(classA)#%d (0) { 186 } 187} 188-- Iterator 11 -- 189array(6) { 190 [6]=> 191 resource(%d) of type (stream) 192 [7]=> 193 string(11) "Hello world" 194 [8]=> 195 string(11) "Hello world" 196 [9]=> 197 object(classA)#%d (0) { 198 } 199 [10]=> 200 float(444.432) 201 [11]=> 202 string(5) "fruit" 203} 204array(6) { 205 [6]=> 206 resource(%d) of type (stream) 207 [7]=> 208 string(11) "Hello world" 209 [8]=> 210 string(11) "Hello world" 211 [9]=> 212 object(classA)#%d (0) { 213 } 214 [10]=> 215 float(444.432) 216 [11]=> 217 string(5) "fruit" 218} 219Done 220