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