两个数组群取交集,从算法的角度可以看成两个数组去交集 下面是asp的一个例子,参考一下吧,数组的交叉比较,每次循环 1,若找到一个公共元素后,两个数组下次的比较长度都会减1 2,若没有找到公共元素,这其中一个比较长度减1 3,若其中一个数组下标越界,则比较结束 在数组比较大的情况下,这种方法的效率提高的相当明显哦Dim arrayA(4) As String Dim arrayB(5) As String Dim arrayC(5) As String arrayA(0) = "abcd" arrayA(1) = "bdbf" arrayA(2) = "cdefg" arrayA(3) = "fgddd"arrayB(0) = "abcde" arrayB(1) = "cdefg" arrayB(2) = "dfghjkjk" arrayB(3) = "fgddd" arrayB(4) = "hhhhhhhhhhh" Dim i As Integer Dim j As Integer Dim k As Integer k = 0 While (i < 4 And j < 5) If arrayA(i) < arrayB(j) Then i += 1 ElseIf arrayA(i) > arrayB(j) Then j += 1 Else arrayC(k) = arrayA(i) i += 1 j += 1 k += 1 End If End While
雙循環加上使用array_intersect()
下面是asp的一个例子,参考一下吧,数组的交叉比较,每次循环
1,若找到一个公共元素后,两个数组下次的比较长度都会减1
2,若没有找到公共元素,这其中一个比较长度减1
3,若其中一个数组下标越界,则比较结束
在数组比较大的情况下,这种方法的效率提高的相当明显哦Dim arrayA(4) As String
Dim arrayB(5) As String
Dim arrayC(5) As String
arrayA(0) = "abcd"
arrayA(1) = "bdbf"
arrayA(2) = "cdefg"
arrayA(3) = "fgddd"arrayB(0) = "abcde"
arrayB(1) = "cdefg"
arrayB(2) = "dfghjkjk"
arrayB(3) = "fgddd"
arrayB(4) = "hhhhhhhhhhh"
Dim i As Integer
Dim j As Integer
Dim k As Integer
k = 0
While (i < 4 And j < 5)
If arrayA(i) < arrayB(j) Then
i += 1
ElseIf arrayA(i) > arrayB(j) Then
j += 1
Else
arrayC(k) = arrayA(i)
i += 1
j += 1
k += 1
End If
End While
交用array_intersect()这个方法,如果要合并数组可以用array_merge()方法
就是先合并数组再比较交
<?php
$array1 = array("a" => "green", "red", "blue");
$array2 = array("b" => "green", "yellow", "red");
$result = array_intersect($array1, $array2);
?>
结果:
Array
(
[a] => green
[0] => red
)