代码之家  ›  专栏  ›  技术社区  ›  tree em

想得到不在数组A中的新数组吗?

php
  •  1
  • tree em  · 技术社区  · 14 年前

    $A = array('a','b','c','d')
    $c = array('b','c','e','f')
    

    我想得到一个新数组,其中包含数组中没有的项 $A

    $result = array('e','f');
    

    因为 'e' 'f' 你不在 一美元

    4 回复  |  直到 14 年前
        1
  •  9
  •   Alex    14 年前

    使用 array_diff
    print_r(array_diff($c, $A)); 退货

    Array
    (
        [2] => e
        [3] => f
    )
    
        2
  •  2
  •   mhitza Federico Taschin    14 年前

    使用 array_diff 对于此任务。有点恼人,它没有返回两个数组之间的所有差异。只传递第一个数组中的元素,这些元素在作为参数传递的任何其他数组中都找不到。

    $array1 = array('a','b','c','d');
    $array2 = array('b','c','e','f');
    $result = array_diff($array2, $array1);
    
        3
  •  1
  •   Piotr Müller    14 年前
        4
  •  1
  •   Tom Gullen    14 年前

    psedoo通用实现代码

    免责声明:不熟悉PHP,其他答案表明有很多更快的方法可以做到这一点:)

    在第一个数组中循环:

    // Array of results
    array results[];
    
    // Loop through all chars in first array
    for i = 0; i < A.size; i++
    {
        // Have we found it in second array yet?
        bool matched = false;
    
        // Loop each character in 2nd array
        for j = 0; j < C.size; j++
        {
            // If they match, exit the loop
            if A[i] == C[J] then
                matched = true;
                exit for;
        }
    
        // If we have a match add it to results
        if matches == true then results.add(A[i])
    
    }