PHP Получить различия в многомерном массиве на основе второго значения

У меня есть два многомерных массива, каждый элемент в массиве состоит из 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 функция.

Я что-то здесь упускаю? Любая помощь приветствуется.

0

Решение

Проблема в том, что вы ищете разницу в перекрестке, используя только разностную функцию.

Попробуйте вычислить пересечение на основе строкового значения и использовать результат для вычисления разницы на основе значения 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');
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector