array_intersect,array_intersect_ukey
如何快速取两个二维数组中的交集
一维数组取交集是非常的简单,直接用一个函数即可。array_intersect($arr, $ar),那么二维数组又是如何的取出它们的交集呢,可能有人同样想用这个函数,但结果却不是我们想要的。下面有这样的一个数组:
$arr=array(
array('a'='1',2),
array(3,4)
);
$ar=array(
array('a'=1,2),
array(3,4)
);
如果我单独用 array_intersect($arr, $ar)。返回的结果如下:
array(
array('a'='1',2),
array(3,4)
);
两个php数组,怎么取得其中的相似的数据
你好.
你可以使用函数array_intersect取得其中的相似数据.实例代码:
$arr1=array(1,2,3,4,5);
$arr2=array(2,3,6,7,8);
$a=array_intersect($arr1,$arr2);
print_r($a); //输出2,3
php 判断两个数组是否有交集
在PHP中求数组的交集,我们可以与PHP给我们提供的现成函数:array_intersect(),其用法格式为:
array array_intersect(array array1,array array2[,arrayN…])
根据上述的语法格式,我们来写一个例子:
1 ?php
2 $fruit1 = array("Apple","Banana","Orange");
3 $fruit2 = array("Pear","Apple","Grape");
4 $fruit3 = array("Watermelon","Orange","Apple");
5 $intersection = array_intersect($fruit1, $fruit2, $fruit3);
6 print_r($intersection);
7 // 输出结果:
8 // Array ( [0] = Apple )
9 ?
本例子将返回在$fruit1数组中出现且在$fruit2和$fruit3中也出现的所有水果的名子。
使用array_intersect()函数时要注意:只有在两个元素相等且具有相同的数据类型时,array_intersect()函数才会认
为它们是相同的,否则不能进行交集计算。array_intersect()函数返回一个保留了键的数组,只由第一个数组中出现的且在其它数组中都出现的
值组成。
若要求关联数组的交集,请使用array_intersect_assoc()函数,给你个简单的例子:
1 ?php
2 $fruit1 = array("red"="Apple","yellow"="Banana","orange"="Orange");
3 $fruit2 = array("yellow"="Pear","red"="Apple","purple"="Grape");
4 $fruit3 = array("green"="Watermelon","orange"="Orange","red"="Apple");
5 $intersection = array_intersect_assoc($fruit1, $fruit2, $fruit3);
6 print_r($intersection);
7 // 输出:
8 // Array ( [red] = Apple )
9 ?
array_intersect_assoc()函数语法格式如下:
array array_intersect_assoc(array array1,array array2[,arrayN…])
array_intersect_assoc()与array_intersect()基本相同,只不过他在比较中还考虑了数组的键。因此,只有在第一个数组中出现,且在所有其他输入数组中也出现的键/值对才返回到结果数组中。
php 多个多维数组求交集
array_intersect
(PHP 4 = 4.0.1, PHP 5)
array_intersect -- 计算数组的交集说明
array array_intersect ( array array1, array array2 [, array ...])
array_intersect() 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意键名保留不变。
例子 1. array_intersect() 例子
?php
$array1 = array ("a" = "green", "red", "blue");
$array2 = array ("b" = "green", "yellow", "red");
$result = array_intersect ($array1, $array2);
?
这使得 $result 成为:
Array
(
[a] = green
[0] = red
)
注: 两个单元仅在 (string) $elem1 === (string) $elem2 时被认为是相同的。也就是说,当字符串的表达是一样的时候。
array_diff
(PHP 4 = 4.0.1, PHP 5)
array_diff -- 计算数组的差集说明
array array_diff ( array array1, array array2 [, array ...])
array_diff() 返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意键名保留不变。
例子 1. array_diff() 例子
?php
$array1 = array ("a" = "green", "red", "blue", "red");
$array2 = array ("b" = "green", "yellow", "red");
$result = array_diff ($array1, $array2);
?
这使得 $result 成为 array (1 = "blue");。在 $array1 中多次出现的值同样对待。
注: 两个单元仅在 (string) $elem1 === (string) $elem2 时被认为是相同的。也就是说,当字符串的表达是一样的时候。
注: 注意此函数仅检查多维数组中的一维。当然你可以用 array_diff($array1[0], $array2[0]); 检查更深的维度。
array_diff_assoc -- 带索引检查计算数组的差集
说明
array array_diff_assoc ( array array1, array array2 [, array ...])
array_diff_assoc() 返回一个 array,返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意和 array_diff() 不同的是键名也用于比较。
例子 1. array_diff_assoc() 例子
?php
$array1 = array ("a" = "green", "b" = "brown", "c" = "blue", "red");
$array2 = array ("a" = "green", "yellow", "red");
$result = array_diff_assoc($array1, $array2);
?
上面的例子中可以看到键值对 "a" = "green" 在两个数组中都有,因此不在本函数的输出中。与此不同,键值对 0 = "red" 出现在输出中是因为第二个参数中的 "red" 的键名是 1。
键值对 key = value 中的两个值仅在 (string) $elem1 === (string) $elem2 时被认为相等。也就是说使用了严格检查,字符串的表达必须相同。