比较PHP中的多维数组

时间:2013-11-25 08:55:38

标签: php arrays multidimensional-array logic

我无法比较多维数组:

让我说我有两个数组如下!

数组1:

Array
    (
        [0] => Array
            (
                [a] => 12XXYYZZ
                [b] => 30
                [c] => 12
            )

        [1] => Array
            (
                [a] => 12SSYYZZ
                [b] => 66
                [c] => 44
            )
        [2] => Array
            (
                [a] => 12EEYYZZ
                [b] => 66
                [c] => 56
            )

    )

数组2:

Array
    (
        [0] => Array
            (
                [a] => 12XXYYZZ
                [b] => 30
                [c] => 12
            )

        [1] => Array
            (
                [a] => 12SSYYZZ
                [b] => 66
                [c] => 44
            )


    )

我试图比较这两个数组并找到数组2中不存在的子数组;

注意:我尝试使用Array DIFF但不适用于多维数组。

1 个答案:

答案 0 :(得分:1)

您可以使用serialize进行比较,例如:

$result = array_map(
   'unserialize', 
   array_diff(
      array_map('serialize', $one),
      array_map('serialize', $two)
));

- 但请注意,这种情况下键值和它们的顺序都很重要。或者,您可以使用array_udiff,如下所示:

$result = array_udiff($one, $two, function($x, $y)
{
   return strcasecmp(serialize($x), serialize($y));
});