现在有一群数组A:
$a1,$a2,$a3
和一群数组B:
$b1,$b2,$b3怎么样才能用比较好的方法得到A里面的每个成员与B里面的每个成员之间的交集

解决方案 »

  1.   

    我的初步想法:
    雙循環加上使用array_intersect()
      

  2.   

    两个数组群取交集,从算法的角度可以看成两个数组去交集
    下面是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
     
      

  3.   

    LZ可以先合并数组再比较交
    交用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
    )