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