Вычисляет расхождение массивов с дополнительной проверкой индекса через пользовательскую callback-функцию

# array_diff_uassoc

(PHP 5, PHP 7, PHP 8)

array_diff_uassoc — Вычисляет расхождение массивов с дополнительной проверкой индекса через пользовательскую callback-функцию

### Описание

function array_diff_uassoc(array `$array`, array `...$arrays`, callable `$key_compare_func`): array

Сравнивает значения массива `array` cо значениями массивов `arrays` и возвращает разницу. В этой функции, в отличие от функции array_diff(), ключи массива также участвуют в сравнении.

В отличие от функции array_diff_assoc(), в этой функции ключи сравнивает пользовательская callback-функция, а не встроенная.

### Список параметров

`array`

  Исходный массив

`arrays`

  Массивы, с которыми идёт сравнение

`key_compare_func`
  Функция сравнения должна возвращать целое, которое меньше, равно или больше нуля, если первый аргумент является соответственно меньшим, равным или большим, чем второй.
  function callback(mixed `$a`, mixed `$b`): int
  Предостережение

  При возврате из функции сравнения нецелых значений наподобие float PHP внутренне приведёт значение, которое возвращает callback-функции, к типу int. Поэтому значения наподобие `0.99` и `0.1` приводятся к целочисленному значению `0` и сравниваются как равные.

### Возвращаемые значения

Возвращает массив (array), содержащий все элементы массива `array`, которых нет в других сравниваемых массивах.

### Примеры

Пример #1 Пример использования array_diff_uassoc()

В этом примере пара `"a" => "green"` существует в обоих содержится в обоих массивах, и поэтому её нет в выводе функции. Но пара `0 => "red"` содержится в выводе функции, потому что значению `"red"` в первом массиве автоматически присваивается ключ `0`, а во втором массиве тому же значению будет присвоен ключ `1`, поскольку ключ `0` уже занят значением `yellow`.

    <?php
    function key_compare_func($a, $b)
    {
        if ($a === $b) {
            return 0;
        }
        return $a <=> $b;
    }

    $array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
    $array2 = array("a" => "green", "yellow", "red");
    $result = array_diff_uassoc($array1, $array2, "key_compare_func");
    print_r($result);
    ?>

Результат выполнения приведённого примера:

    Array
    (
        [b] => brown
        [c] => blue
        [0] => red
    )

Равенство 2 индексов проверяется функцией, предоставляемой пользователем.

### Примечания

> Замечание:

> Эта функция проверяет только один уровень n-мерного массива. Сравнить вложенные массивы можно, указав более глубокий уровень, например: `array_diff_uassoc($array1[0], $array2[0], "key_compare_func");`.

### Смотрите также

- array_diff() - Вычисляет расхождение массивов
- array_diff_assoc() - Вычисляет расхождение массивов с дополнительной проверкой индекса
- array_udiff() - Вычисляет расхождение массивов, используя для сравнения callback-функцию
- array_udiff_assoc() - Вычисляет расхождение в массивах с дополнительной проверкой индексов, используя для сравнения значений callback-функцию
- array_udiff_uassoc() - Вычисляет расхождение в массивах с дополнительной проверкой индексов, сравнивая значения и индексы через callback-функцию
- array_intersect() - Вычисляет пересечение массивов
- array_intersect_assoc() - Вычисляет пересечение массивов с дополнительной проверкой индекса
- array_uintersect() - Вычисляет пересечение массивов, используя для сравнения значений callback-функцию
- array_uintersect_assoc() - Вычисляет пересечение массивов с дополнительной проверкой индексов, используя для сравнения значений callback-функцию
- array_uintersect_uassoc() - Вычисляет пересечение массивов с дополнительной проверкой индекса, используя для сравнения индексов и значений отдельные callback-функции

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open