我想知道是否有更快的方法来找到两个多维数组之间的差异。根据差异我的意思(从array1
)
array1
和array2
array1
中有多少行,而array2
中没有这些行
,反之亦然,array2
中有多少行,且不在array1
中。
我试过的解决方案是迭代两个数组并比较列。但是这些阵列大约有7 columns
这个事实让它变得很烦人。
array_diff
之类的功能有什么用途吗?
答案 0 :(得分:0)
用于第一次查询
$comonarray=array_intersect(A,B);
你可以在两个数组中找到comon值
通过使用以下功能,您只能在A数组中找到值
$onlyina=array_diff(A,B);
通过使用以下功能,您只能在B数组中找到值
$onlyinb= array_diff(B,A);
答案 1 :(得分:0)
=====
当两个表中都匹配时,返回行。
SELECT `columns` FROM A
INNER JOIN B
ON A.id = B.id;
仅返回表A中的记录集,但不返回表B中的记录集 WHERE子句排除表B中的记录
SELECT `columns` FROM A
LEFT OUTER JOIN B
ON A.id = B.id
WHERE B.id IS null;
仅在表B中返回记录集,但不在表A中返回 WHERE子句排除表A中的记录
SELECT `columns` FROM A
RIGHT OUTER JOIN B
ON A.id = B.id
WHERE A.id IS null;
=====
要查找 array1 和 array2 中的匹配值,请使用array_intersect().
$arr1 = array('a','b','c');
$arr2 = array('b','c','f');
$result = array_intersect($arr1,$arr2);
Array
(
[1] => b
[2] => c
)
要在 array2 中找不到 array1 中的值,请使用array_diff() array_diff()
获取多个数组参数但要检查的数组,应该是第一个。
$arr1 = array('a','b','c');
$arr2 = array('b','c','f');
$result = array_diff($arr1,$arr2);
Array
(
[0] => a
)
此方法也使用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
)