获取阵列之间的差异

时间:2016-11-01 11:37:51

标签: php arrays

我的思绪会爆炸。需要在数组1中获取id为4和6的数组元素。基本上它是这两个数组的差异。我尝试使用每个循环,但我不能得到我想要的输出

Array 1(
 0 => array(
        id: 1
          )
 1 => array(
        id: 4
          )
 2 => array(
        id: 5
          )
 3 => array(
        id: 6
          )
 )

Array 2(

 0 => array(
        id: 1
          )
 1 => array(
        id: 5
          )
      )

我想要的输出:

new Array (
 0 => array (
      id: 4
            )
 1 => array (
      id: 6)
        )

我尝试过的事情:

foreach ($array1 as $key => $value) {
    foreach ($array2 as $key2 => $value2) {
      if($value2['id']  !== $value['id']){
        $result['id'] = $value2['id'];
      }
    }
  }

3 个答案:

答案 0 :(得分:3)

您可以使用array_udiff()这样的功能。

function diffCompare($a, $b)
{
    return $a['id'] - $b['id'];
}

$difference = array_udiff($array1, $array2, 'diffCompare');

答案 1 :(得分:0)

使用array_diff_key获得预期的输出。

array_diff_key($array1, $array2)
  

它将来自array1的键与来自array2和的键的键进行比较   返回差异。这个函数就像array_diff()一样除了   比较是在键而不是值上完成的。

答案 2 :(得分:0)

解答:

foreach ($array1 as $key => $value) {
   foreach ($array2 as $key2 => $value2) {
     if($value2['id']  !== $value['id']){
        unset($array1[$key2]);
      }
}
}

说明:   array1得到的数组元素比array2多,我的问题是我需要获取array2中不存在的数组1中的元素。所以要解决这个问题,如果array2元素存在于array1中,则取消设置array1中与array2中相同的元素。 array1将返回array2中不存在的元素