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