是否有任何算法可以找到它们之间没有共同密钥的数组

时间:2013-04-17 09:26:28

标签: php arrays math

$array1 = array (
    '1' => A,
    '2' => B,
    '3' => C
);

$array2 = array (
    '1' => A,
    '4' => B,
    '5' => D
);

$array3 = array (
    '5' => A,
    '6' => E,
    '7' => D
);

$array4 = array (
    '4' => A,
    '7' => B,
    '10' => C
);

我想找出具有所有不同键的数组,而不是单个键在数组之间应该是通用的。

$array1 - $array3, $array1 - $array4是两种没有共用键的组合。算法的输出应该是这些组合。

3 个答案:

答案 0 :(得分:5)

如果两个数组没有公共密钥,那么

count(array_intersect_key($a, $b))应为0

答案 1 :(得分:1)

要从两个数组中查找唯一键,您可以使用此

$newArray = array_diff_key($targetArray, $compArray);

答案 2 :(得分:0)

类似的东西:

function test() {
    $arrays = func_get_args();
    for($i = 0; $i < count($arrays); $i++) {
        if (($i + 1) == count($arrays))
        break;
        for($k = $i; $k < count($arrays); $k++) {
            if (count(array_intersect_key($arrays[$i], $arrays[$k])) == 0){
                var_dump($arrays[$i]);
                var_dump($arrays[$k]);
                printf('<hr />');
            }
        }   
    }
}
print_r(test($array1, $array2, $array3, $array4));

应该解决你的问题。