array_intersect();做?我对编码非常陌生,并且在我看来,php手册有点不清楚。
$array1 = array("a" => "green", "red", "blue");
$array2 = array("b" => "green", "yellow", "red");
$result = array_intersect($array1, $array2);
答案 0 :(得分:3)
它返回一个数组,其中包含传入的每个数组中的值。在示例中"yellow"
不在$array1
中,因此它不能在交集中。
"green"
和"red"
在两个数组中,因此它们位于结果数组中,第一个数组中的关联键传入array_intersect。
答案 1 :(得分:2)
它会尝试查找array1
和array2
中的值。如果找到这些结果,则第一个数组的键将用于生成的数组中。
完全展开的数组是:
$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
,如果该元素x
是array1
之后的参数列表中指定的每个数组的成员,那么该交集将包含x
答案 5 :(得分:1)
嗯,它会返回交叉点,但是会查看VALUES。请注意,两个阵列中只有绿色和红色。返回两个元素,键是第一个数组中的键。
答案 6 :(得分:1)
数组相交只是做集合的交集。
如果您有2个集合,请说[a,b,c,d,e]
和[a,b,g,e]
它将与它相交(获取常用值)并将其返回。
因此,这两个集合上的数组相交将返回[a,b,e]
,因为这些元素都在两个集合中。
您的函数输出为绿色和红色,因为它们存在于两个数组中。
图中的灰色区域显示两个集合的交集