Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中多维数组的比较_Php_Multidimensional Array_Associative Array - Fatal编程技术网

PHP中多维数组的比较

PHP中多维数组的比较,php,multidimensional-array,associative-array,Php,Multidimensional Array,Associative Array,我试图与多维数组进行比较,但我不能只使用array\u diff\u assoc()。我试图比较的数组都是关联数组,它们都经过排序,因此键的顺序相同。在大多数情况下,阵列的结构是相同的。我似乎不知道如何比较存储数组的元素,我可以比较包含一个值的元素,很好。有人知道我能做什么吗?手册页上有一个,它似乎满足了你的要求。手册页上有一个,它似乎满足了你的要求。不清楚你是否想知道它们是否相等,或者实际上想要一个差异是什么的输出 如果是前者,则可以使用递归函数以正确的方式执行: $array1 = arra

我试图与多维数组进行比较,但我不能只使用array\u diff\u 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))

现在还不清楚你是想知道它们是否相等,还是想知道它们之间的差异是什么

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

$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))

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

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

这将使您对两个数组的相等性有一个肯定或否定的判断。

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

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

这将给你两个数组相等的一个肯定或否定。

这正是我所需要的。当我看手册的时候,我错过了,哈哈!这正是我需要的。当我看手册的时候,我错过了,哈哈!