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