如果在另一个二维数组的任何行中找到列值,则从二维数组中删除行获取数组之间的差异[重复]

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

我需要使用二维黑名单数组获取

$array1
中id为4和6的数组元素。基本上就是这两个数组的区别。我尝试使用 foreach 循环,但无法获得我想要的输出。

$array1 = [
    ['id' => 1],
    ['id' => 4],
    ['id' => 5],
    ['id' => 6],
];
          
$array2 = [
    ['id' => 1],
    ['id' => 5],
];

我想要的输出:

[
    ['id' => 4],
    ['id' => 6],
]

我尝试过的:

foreach ($array1 as $key => $value) {
    foreach ($array2 as $key2 => $value2) {
        if ($value2['id'] !== $value['id']){
            $result['id'] = $value2['id'];
        }
    }
}
php arrays multidimensional-array filter array-difference
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.