获取数组之间的差异[重复]

问题描述 投票:0回答:3

我的心快要爆炸了。需要获取数组1中id为4和6的数组元素。基本上是这两个数组的区别。我尝试使用 for 每个循环,但我无法获得我想要的输出

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'];
      }
    }
  }
php arrays
3个回答
3
投票

您可以像这样使用 array_udiff() 函数。

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

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

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

$array1
的数组元素比 array2 更多。我的问题是我需要获取
$array1
中不存在于
$array2
中的元素。

要解决此问题,如果

$array2
中存在
$array1
元素,请取消设置
$array1
中的元素。
$array1
将返回
$array2
中不存在的元素。


-1
投票

使用 array_diff_key 获得预期的输出。

array_diff_key($array1, $array2)

它将 array1 中的键与 array2 中的键进行比较, 返回差值。这个函数类似于 array_diff(),除了 比较是在键而不是值上进行的。

© www.soinside.com 2019 - 2024. All rights reserved.