簡體   English   中英

比較兩個多維數組的函數的優化

[英]Optimalization of function which compare two multidimensional arrays

我想知道是否有更快的方法來找到兩個多維數組之間的差異。 array1差異(從array1角度來看)

array1array2有多少行

在此處輸入圖片說明
(來源: matematyka.pl

array1有多少行,而array2中沒有 在此處輸入圖片說明

反之亦然,在array2有多少行而不在array1

我嘗試的解決方案是遍歷兩個數組並比較列。 但是這些數組只有大約7 columns事實使它非常煩人。

array_diff類的函數有什么用?

用於第一次查詢

$comonarray=array_intersect(A,B);

您可以在兩個數組中找到共同值

通過使用以下函數,您只能在A數組中找到值

$onlyina=array_diff(A,B);

通過使用以下函數,您只能在B數組中找到值

$onlyinb= array_diff(B,A);

SQL方法:

================

1)內部加入:

當兩個表中都匹配時,返回行。

在此處輸入圖片說明

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

2)左外連接:

僅在表A中返回記錄集,而在表B中不返回,並且使用WHERE子句從表B中排除記錄

在此處輸入圖片說明

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

3)右外加入:

僅在表B中返回記錄集,而在表A中不返回,並且使用WHERE子句從表A中排除記錄

在此處輸入圖片說明

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

PHP方法:

================

1)相交值:

要從array1array2查找匹配值,請使用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將首先出現,以便我們在array2中找到array1中不存在的值。 要查找array2中不存在的array1中的值,請使用

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

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

輸出:

Array
(
    [2] => f
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM