PHP 根据第二个值获取多维数组的差异

PHP Get differences in multidimensional array based on second value

我有两个多维数组,数组中的每个元素由两个元素组成,第一个是字符串,第二个是整数。当且仅当第一个元素相等时,我想根据第二个值获得两个多维数组之间的差异。我正在使用 array_udiff 如下所示:

$arrdiff = array_udiff($arr1, $arr2, 'udiffCompare');

我实现了函数 array_udiff,如果第一个元素与 return 不同,它们是相等的,因为我不希望它出现在差异中,如果第一个元素是equal 然后比较第二个元素和 return 相应,下面是我实现的函数

function udiffCompare($a, $b) {
    return strcmp($a[0], $b[0]) == 0 ? $ a[1] - $b[1] : 0;
}

然而,即使我有两个数组,第一个元素相同但第二个元素不同,它们不会 return 在 array_udiff 函数的结果中编辑。

我在这里遗漏了什么吗?感谢任何帮助。

问题是,您正在寻找交叉路口内的差异,仅使用差异函数。

尝试根据字符串值计算交集,并使用结果根据 int 值计算差值。

function sameString ($a, $b) {
    return strcmp($a[0], $b[0]);
}

function differentInt($a, $b) {
    return $a[1] - $b[1];
}

$diff = array_udiff(array_uintersect($arr1, $arr2, 'sameString'), $arr2, 'differentInt');