我想比较多层面阵列,但我不能只用array_diff_assoc().阵列,我想比较两者的关联阵列,他们都是排,钥匙都在相同的顺序。大多数组在结构上都是相同的。我似乎无法找出如何进行比较的元素存储阵列,我可以比较的要素保持一个数值刚好有没有人知道我能做什么?

有帮助吗?

解决方案

还有一个 用户贡献的注意 在手册页 array_diff_assoc() 这似乎是它做什么你要求。

其他提示

如果您想进去看看它们是不同的(而不是具体什么是不同的),你可以尝试这样的:

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

这会给你一个酵母或尼亚上的两个阵列的平等。

目前尚不清楚是否要看看他们是否相等,或真正想要的差异是什么输出。

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

$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))
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top