比较两个多维数组的函数优化

时间:2014-04-28 10:56:04

标签: php arrays multidimensional-array

我想知道是否有更快的方法来找到两个多维数组之间的差异。根据差异我的意思(从array1

的角度来看

array1array2

中有多少行

enter image description here

array1中有多少行,而array2中没有这些行 enter image description here

,反之亦然,array2中有多少行,且不在array1中。

我试过的解决方案是迭代两个数组并比较列。但是这些阵列大约有7 columns这个事实让它变得很烦人。

array_diff之类的功能有什么用途吗?

2 个答案:

答案 0 :(得分:0)

用于第一次查询

$comonarray=array_intersect(A,B);

你可以在两个数组中找到comon值

通过使用以下功能,您只能在A数组中找到值

$onlyina=array_diff(A,B);

通过使用以下功能,您只能在B数组中找到值

$onlyinb= array_diff(B,A);

答案 1 :(得分:0)

SQL方法:

=====

1)内部联接:

  当两个表中都匹配时,

返回行。

enter image description here

SELECT `columns` FROM A
INNER JOIN B
ON A.id = B.id;

2)左外连接:

  

仅返回表A中的记录集,但不返回表B中的记录集   WHERE子句排除表B中的记录

enter image description here

SELECT `columns` FROM A
LEFT OUTER JOIN B 
ON A.id = B.id
WHERE B.id IS null;

3)右外连接:

  

仅在表B中返回记录集,但不在表A中返回   WHERE子句排除表A中的记录

enter image description here

SELECT `columns` FROM A
RIGHT OUTER JOIN B 
ON A.id = B.id
WHERE A.id IS null;

PHP方法:

=====

1)相交值:

要查找 array1 array2 中的匹配值,请使用array_intersect().

$arr1 = array('a','b','c');
$arr2 = array('b','c','f');

$result = array_intersect($arr1,$arr2);

输出:

Array
(
    [1] => b
    [2] => c
)

2)第一个数组值:

要在 array2 中找不到 array1 中的值,请使用array_diff() array_diff()获取多个数组参数但要检查的数组,应该是第一个。

$arr1 = array('a','b','c');
$arr2 = array('b','c','f');

$result = array_diff($arr1,$arr2);

输出:

Array
(
    [0] => a
)

3)第二个数组值:

此方法也使用array_diff(),只是我们将翻转搜索顺序。 array2 将首先出现,以便我们在 array1 中找到 array1 中不存在的值。 要在 array2 中找不到 array1 中的值,请使用

$arr1 = array('a','b','c');
$arr2 = array('b','c','f');

$result = array_diff($arr1,$arr2);

输出:

Array
(
    [2] => f
)