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');
我有两个多维数组,数组中的每个元素由两个元素组成,第一个是字符串,第二个是整数。当且仅当第一个元素相等时,我想根据第二个值获得两个多维数组之间的差异。我正在使用 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');