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

时间:2018-02-12 22:16:59

标签: php arrays multidimensional-array diff

我有两个多维数组,数组中的每个元素由2个元素组成,第一个是字符串,第二个是整数。我想基于第二个值来区分两个多维数组,当且仅当第一个元素相等时。我正在使用array_udiff,如下所示:

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

我实现了函数array_udiff,这样如果第一个元素不同,则返回它们相等,因为我不希望它出现在差异中,如果第一个元素相等,则比较第二个元素并相应返回,下面是我实现的函数

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

但是,即使我有两个具有相同第一个元素但第二个元素不同的数组,它们也不会在array_udiff函数的结果中返回。

我在这里遗漏了什么?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

问题是,你在交叉路口寻找差异,只使用差异函数。

尝试根据字符串值计算交集,并使用结果根据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');