php-src/ext/standard/tests/array/array_intersect_variation5.phpt
2007-10-27 12:15:16 +00:00

215 lines
4.2 KiB
PHP
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

--TEST--
Test array_intersect() function : usage variations - assoc array with diff keys for 'arr1' argument
--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 functionality of array_intersect() by passing different
* associative arrays having different possible keys to $arr1 argument.
* The $arr2 argument is a fixed array
*/
echo "*** Testing array_intersect() : assoc array with diff keys to \$arr1 argument ***\n";
// get an unset variable
$unset_var = 10;
unset ($unset_var);
// get a resource variable
$fp = fopen(__FILE__, "r");
// get a class
class classA
{
public function __toString(){
return "Class A object";
}
}
// get a heredoc string
$heredoc = <<<EOT
Hello world
EOT;
// different variations of associative arrays to be passed to $arr1 argument
$arrays = array (
// empty array
/*1*/ array(),
// arrays with integer keys
array(0 => "0"),
array(1 => "1"),
array(1 => "1", 2 => "2", 3 => "3", 4 => "4"),
// arrays with float keys
/*5*/ array(2.3333 => "float"),
array(1.2 => "f1", 3.33 => "f2",
4.89999922839999 => "f3",
33333333.333333 => "f4"),
// arrays with string keys
/*7*/ array('\tHello' => 111, 're\td' => "color",
'\v\fworld' => 2.2, 'pen\n' => 33),
array("\tHello" => 111, "re\td" => "color",
"\v\fworld" => 2.2, "pen\n" => 33),
array("hello", $heredoc => "string"), // heredoc
// array with object, unset variable and resource variable
/*10*/ array(new classA() => 11, @$unset_var => "hello", $fp => 'resource'),
// array with mixed keys
/*11*/ array('hello' => 1, new classA() => 2, "fruit" => 2.2,
$fp => 'resource', 133 => "int", 444.432 => "float",
@$unset_var => "unset", $heredoc => "heredoc")
);
// array to be passsed to $arr2 argument
$arr2 = array(1, "float", "f4", "hello", 2.2, 'color', "string", "pen\n", 11);
// loop through each sub-array within $arrrays to check the behavior of array_intersect()
$iterator = 1;
foreach($arrays as $arr1) {
echo "-- Iterator $iterator --\n";
// Calling array_intersect() with default arguments
var_dump( array_intersect($arr1, $arr2) );
// Calling array_intersect() with more arguments.
// additional argument passed is the same as $arr1 argument
var_dump( array_intersect($arr1, $arr2, $arr1) );
$iterator++;
}
// close the file resource used
fclose($fp);
echo "Done";
?>
--EXPECTF--
*** Testing array_intersect() : assoc array with diff keys to $arr1 argument ***
Warning: Illegal offset type in %s on line %d
Warning: Illegal offset type in %s on line %d
Warning: Illegal offset type in %s on line %d
Warning: Illegal offset type in %s on line %d
-- Iterator 1 --
array(0) {
}
array(0) {
}
-- Iterator 2 --
array(0) {
}
array(0) {
}
-- Iterator 3 --
array(1) {
[1]=>
string(1) "1"
}
array(1) {
[1]=>
string(1) "1"
}
-- Iterator 4 --
array(1) {
[1]=>
string(1) "1"
}
array(1) {
[1]=>
string(1) "1"
}
-- Iterator 5 --
array(1) {
[2]=>
string(5) "float"
}
array(1) {
[2]=>
string(5) "float"
}
-- Iterator 6 --
array(1) {
[33333333]=>
string(2) "f4"
}
array(1) {
[33333333]=>
string(2) "f4"
}
-- Iterator 7 --
array(2) {
["re\td"]=>
string(5) "color"
["\v\fworld"]=>
float(2.2)
}
array(2) {
["re\td"]=>
string(5) "color"
["\v\fworld"]=>
float(2.2)
}
-- Iterator 8 --
array(2) {
["re d"]=>
string(5) "color"
[" world"]=>
float(2.2)
}
array(2) {
["re d"]=>
string(5) "color"
[" world"]=>
float(2.2)
}
-- Iterator 9 --
array(2) {
[0]=>
string(5) "hello"
["Hello world"]=>
string(6) "string"
}
array(2) {
[0]=>
string(5) "hello"
["Hello world"]=>
string(6) "string"
}
-- Iterator 10 --
array(1) {
[""]=>
string(5) "hello"
}
array(1) {
[""]=>
string(5) "hello"
}
-- Iterator 11 --
array(3) {
["hello"]=>
int(1)
["fruit"]=>
float(2.2)
[444]=>
string(5) "float"
}
array(3) {
["hello"]=>
int(1)
["fruit"]=>
float(2.2)
[444]=>
string(5) "float"
}
Done