1--TEST-- 2Test array_intersect() function : usage variations - assoc array with diff values 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 * Testing the functionality of array_intersect() by passing different 12 * associative arrays having different possible values to $arr1 argument. 13 * The $arr2 argument is a fixed array 14*/ 15 16echo "*** Testing array_intersect() : assoc array with diff values to \$arr1 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 $arr1 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 $arr2 argument 68$arr2 = 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 $arr1) { 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 $arr1 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 [1]=> 105 int(1) 106} 107array(1) { 108 [1]=> 109 int(1) 110} 111-- Iterator 4 -- 112array(2) { 113 ["one"]=> 114 int(1) 115 ["two"]=> 116 int(2) 117} 118array(2) { 119 ["one"]=> 120 int(1) 121 ["two"]=> 122 int(2) 123} 124-- Iterator 5 -- 125array(1) { 126 ["float"]=> 127 float(2.3333) 128} 129array(1) { 130 ["float"]=> 131 float(2.3333) 132} 133-- Iterator 6 -- 134array(1) { 135 ["f1"]=> 136 float(1.2) 137} 138array(1) { 139 ["f1"]=> 140 float(1.2) 141} 142-- Iterator 7 -- 143array(1) { 144 ["red"]=> 145 string(6) "col or" 146} 147array(1) { 148 ["red"]=> 149 string(6) "col or" 150} 151-- Iterator 8 -- 152array(1) { 153 [2]=> 154 string(9) "\v\fworld" 155} 156array(1) { 157 [2]=> 158 string(9) "\v\fworld" 159} 160-- Iterator 9 -- 161array(1) { 162 ["heredoc"]=> 163 string(11) "Hello world" 164} 165array(1) { 166 ["heredoc"]=> 167 string(11) "Hello world" 168} 169-- Iterator 10 -- 170array(2) { 171 [11]=> 172 object(classA)#%d (0) { 173 } 174 ["resource"]=> 175 resource(%d) of type (stream) 176} 177array(2) { 178 [11]=> 179 object(classA)#%d (0) { 180 } 181 ["resource"]=> 182 resource(%d) of type (stream) 183} 184-- Iterator 11 -- 185array(5) { 186 [2]=> 187 object(classA)#%d (0) { 188 } 189 [222]=> 190 string(5) "fruit" 191 ["resource"]=> 192 resource(%d) of type (stream) 193 ["float"]=> 194 float(444.432) 195 ["heredoc"]=> 196 string(11) "Hello world" 197} 198array(5) { 199 [2]=> 200 object(classA)#%d (0) { 201 } 202 [222]=> 203 string(5) "fruit" 204 ["resource"]=> 205 resource(%d) of type (stream) 206 ["float"]=> 207 float(444.432) 208 ["heredoc"]=> 209 string(11) "Hello world" 210} 211Done 212