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