1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163
|
--TEST--
Test array_intersect() function : usage variations - two dimensional arrays for $arr1 and $arr2 arguments(Bug#43109)
--FILE--
<?php
/* Prototype : array array_intersect(array $arr1, array $arr2 [, array $...])
* Description: Returns the entries of arr1 that have values which are present in all the other arguments
* Source code: ext/standard/array.c
*/
/*
* Testing the behavior of array_intersect() by passing 2-D arrays
* to both $arr1 and $arr2 argument.
* Optional argument takes the same value as that of $arr1
*/
echo "*** Testing array_intersect() : passing two dimensional array to both \$arr1 and \$arr2 arguments ***\n";
// two dimensional arrays for $arr1 and $arr2 argument
$arr1 = array (
// arrays with default keys
array(1, 2, "hello", 'world'),
array(1, 2, 3, 4),
// arrays with explicit keys
array(1 => "one", 2 => "two", 3 => "three"),
array("ten" => 10, "twenty" => 20.00, "thirty" => 30)
);
$arr2 = array (
array(1, 2, 3, 4),
array(1 => "one", 2 => "two", 3 => "three")
);
/* Passing the entire array as argument to $arr1 and $arr2 */
// Calling array_intersect() with default arguments
echo "-- Passing the entire 2-D array to \$arr1 and \$arr2 --\n";
echo "- With default arguments -\n";
var_dump( array_intersect($arr1, $arr2) );
// Calling array_intersect() with more arguments
// additional argument passed is the same as $arr1
echo "- With more arguments -\n";
var_dump( array_intersect($arr1, $arr2, $arr1) );
/* Passing the sub-array as argument to $arr1 and $arr2 */
// Calling array_intersect() with default arguments
echo "-- Passing the sub-array to \$arr1 and \$arr2 --\n";
echo "- With default arguments -\n";
var_dump( array_intersect($arr1[0], $arr2[0]) );
// Calling array_intersect() with more arguments
// additional argument passed is the same as $arr1
echo "- With more arguments -\n";
var_dump( array_intersect($arr1[0], $arr2[0], $arr1[0]) );
echo "Done";
?>
--EXPECTF--
*** Testing array_intersect() : passing two dimensional array to both $arr1 and $arr2 arguments ***
-- Passing the entire 2-D array to $arr1 and $arr2 --
- With default arguments -
array(4) {
[0]=>
array(4) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
string(5) "hello"
[3]=>
string(5) "world"
}
[1]=>
array(4) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
[3]=>
int(4)
}
[2]=>
array(3) {
[1]=>
string(3) "one"
[2]=>
string(3) "two"
[3]=>
string(5) "three"
}
[3]=>
array(3) {
["ten"]=>
int(10)
["twenty"]=>
float(20)
["thirty"]=>
int(30)
}
}
- With more arguments -
array(4) {
[0]=>
array(4) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
string(5) "hello"
[3]=>
string(5) "world"
}
[1]=>
array(4) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
[3]=>
int(4)
}
[2]=>
array(3) {
[1]=>
string(3) "one"
[2]=>
string(3) "two"
[3]=>
string(5) "three"
}
[3]=>
array(3) {
["ten"]=>
int(10)
["twenty"]=>
float(20)
["thirty"]=>
int(30)
}
}
-- Passing the sub-array to $arr1 and $arr2 --
- With default arguments -
array(2) {
[0]=>
int(1)
[1]=>
int(2)
}
- With more arguments -
array(2) {
[0]=>
int(1)
[1]=>
int(2)
}
Done
|