为什么我的`array_intersect`不工作?

时间:2013-06-04 21:06:28

标签: php arrays

array_intersect();做?我对编码非常陌生,并且在我看来,php手册有点不清楚。

$array1 = array("a" => "green", "red", "blue");
$array2 = array("b" => "green", "yellow", "red");
$result = array_intersect($array1, $array2);

7 个答案:

答案 0 :(得分:3)

它返回一个数组,其中包含传入的每个数组中的值。在示例中"yellow"不在$array1中,因此它不能在交集中。

"green""red"在两个数组中,因此它们位于结果数组中,第一个数组中的关联键传入array_intersect。

答案 1 :(得分:2)

它会尝试查找array1array2中的值。如果找到这些结果,则第一个数组的键将用于生成的数组中。

完全展开的数组是:

$array1 = array(
   "a" => "green", 
   0 => "red",
   1 => "blue"
);

$array2 = array(
   "b" => "green",
   0 => "yellow",
   1 => "red"
);

黄色不在两个阵列中。绝对不能是“b”=> “黄色”,因为它的值只能在第二个数组中找到,并且以0为键。

答案 2 :(得分:2)

它只是为您提供了新的数组,以及您可以在两个阵列上找到的项目。 :)

答案 3 :(得分:1)

阅读说明的最后一行。 containing all the VALUES ...。交叉点中不考虑键,仅考虑值。但是,密钥将保留在交叉路口

答案 4 :(得分:1)

来自PHP帮助

  

array_intersect()返回一个包含array1所有值的数组   在所有论点中都存在。请注意,密钥会被保留。

因此,b不应该是yellow,因为示例中的array1中不会出现黄色。

请注意,它是值,而不是要比较的键。

这样想。对于x中的每个元素array1,如果该元素xarray1之后的参数列表中指定的每个数组的成员,那么该交集将包含x

答案 5 :(得分:1)

嗯,它会返回交叉点,但是会查看VALUES。请注意,两个阵列中只有绿色和红色。返回两个元素,键是第一个数组中的键。

答案 6 :(得分:1)

数组相交只是做集合的交集。

如果您有2个集合,请说[a,b,c,d,e][a,b,g,e]它将与它相交(获取常用值)并将其返回。

因此,这两个集合上的数组相交将返回[a,b,e],因为这些元素都在两个集合中。

您的函数输出为绿色和红色,因为它们存在于两个数组中。

图中的灰色区域显示两个集合的交集

enter image description here