在PHP中比较多维数组

时间:2009-07-15 18:26:50

标签: php multidimensional-array associative-array

我试图与多维数组进行比较,但我不能只使用array_diff_assoc()。我想要比较的数组都是关联数组,它们都是排序的,因此键的顺序相同。在大多数情况下,阵列的结构相同。我似乎无法弄清楚如何比较存储数组的元素,我可以比较保存一个值的元素就好了,有谁知道我能做什么?

感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

如果您试图查看它们是否不同(而不是具体的不同),您可以尝试以下方法:

 return serialize($array1) == seralize($array2);

这会让你对两个数组的相等性有所了解。

答案 1 :(得分:2)

user contributed note的手册页上有一个array_diff_assoc(),看上去就像你要求的那样。

答案 2 :(得分:1)

目前尚不清楚您是否想要了解它们是否相等,或者实际上想要输出差异是什么。

如果是前者那么你可以用正确的方式做到这一点,使用递归函数:

$array1 = array('a' => 1, 'b' => 2, 'c' => array('ca' => 1, 'cb' => array('foo')));
$array2 = array('a' => 1, 'b' => 2, 'c' => array('ca' => 1, 'cb' => array('bar')));

var_dump(arrayEqual($array1, $array2));

function arrayEqual($a1, $a2)
{
    if (count(array_diff($a1, $a2)))
        return false;

    foreach ($a1 as $k => $v)
    {
        if (is_array($v) && !arrayEqual($a1[$k], $a2[$k]))
            return false;
    }

    return true;
}

或者像这样使用完整的黑客:

if (serialize($array1) == serialize($array2))