繁体   English   中英

在PHP中比较多维数组

[英]Comparing Multidimensional arrays in PHP

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

如果您只是想看看它们是否不同(没有什么特别的不同),则可以尝试以下方法:

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

这样可以使您对两个数组的相等性感到满意。

手册页上有一个用户写的有关array_diff_assoc()的 注释 ,它似乎可以满足您的要求。

目前尚不清楚是要看它们是否相等,还是要输出差异是什么。

如果是前者,则可以使用递归函数以正确的方式进行操作:

$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 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM