-1

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

4

2 回答 2

3

如果您只想查看它们是否不同(而不是具体不同),您可以尝试以下操作:

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

这将使您对两个数组的相等性表示肯定或否定。

于 2009-07-15T18:39:02.163 回答
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))
于 2009-07-15T18:36:10.813 回答