[英]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.