0

我有两个结构像这样的数组

$array1 = Array
 (
     [0] => Array
         (
             ['story_id'] => 47789
         )

     [1] => Array
         (
             ['story_id'] => 47779
         )

     [2] => Array
         (
             ['story_id'] => 47776
         )

     [3] => Array
         (
             ['story_id'] => 47773
         )

     [4] => Array
         (
             ['story_id'] => 47763
         )
 )


$array2 = Array
 (
     [0] => Array
         (
             ['story_id'] => 47789
         )

     [1] => Array
         (
             ['story_id'] => 47777
         )

     [2] => Array
         (
             ['story_id'] => 47776
         )

     [3] => Array
         (
             ['story_id'] => 47773
         )

     [4] => Array
         (
             ['story_id'] => 47763
         )
 )

我想从array2中得到array1的区别所以我尝试使用

    $results = array_diff($array1, $array2);

但结果是空的,有什么简单的方法可以解决这个问题,还是最好让我把数组归结起来,如果是这样,有没有简单的方法可以做到这一点?

4

1 回答 1

0

这是因为它array_diff仅用于一维数组。对于您的 2 数组,让我们使用 php.net 中的一些代码

function multidimensional_array_diff($a1, $a2)
{
$r = array();

foreach ($a2 as $key => $second) {
    foreach ($a1 as $key => $first) {

        if (isset($a2[$key])) {
            foreach ($first as $first_value) {
                foreach ($second as $second_value) {
                    if ($first_value == $second_value) {
                        $true = true;
                        break;
                    }
                }
                if (!isset($true)) {

                    $r[$key][] = $first_value;
                }
                unset($true);
            }
        } else {
            $r[$key] = $first;
        }
    }
}
return $r;
}
于 2010-08-09T20:10:20.537 回答