Вычисляет расхождение массивов

# array_diff

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

array_diff — Вычисляет расхождение массивов

### Описание

function array_diff(array `$array`, array `...$arrays`): array

Функция сравнивает массив `array` с другим массивом или с набором других массивов и возвращает из массива `array` значения, которые не содержатся ни в одном другом массиве.

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

`array`

  Массив, значения которого требуется сравнить.

`arrays`

  Массив, со значениями которых сравниваются значения исходного массива.

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

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

### Список изменений

Версия | Описание
--- | ---
8.0.0 | Функция теперь поддерживает вызов только с одним аргументом. Раньше требовалось не меньше двух аргументов.

### Примеры

Пример #1 Пример сравнения массивов функцией array_diff()

    <?php

    $array1 = array("a" => "green", "red", "blue", "red");
    $array2 = array("b" => "green", "yellow", "red");
    $result = array_diff($array1, $array2);

    print_r($result);

Множественные совпадения в массиве $array1 обрабатываются как одно. Функция вернёт следующий результат:

    Array
    (
        [1] => blue
    )

Функция считает элементы равными, только если равны строковые представления значений: `(string) $elem1 === (string) $elem2`.

Пример #2 Пример сравнения массивов с несовпадающими типами функцией array_diff()

    <?php

    // Это сравнение сгенерирует уведомление о невозможности преобразования массива в строку
    $source = [1, 2, 3, 4];
    $filter = [3, 4, [5], 6];
    $result = array_diff($source, $filter);

    // При этом следующее сравнение сработает, поскольку объекты преобразуются в строку
    class S
    {
        private $v;

        public function __construct(string $v)
        {
            $this->v = $v;
        }

        public function __toString()
        {
            return $this->v;
        }
    }

    $source = [new S('a'), new S('b'), new S('c')];
    $filter = [new S('b'), new S('c'), new S('d')];

    $result = array_diff($source, $filter);

    var_dump($result);

Функция array_udiff() сравнивает массивы альтернативным способом.

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

> Замечание:

> Функция проверяет только один уровень вложенности n-мерного массива. Более глубокие уровни вложенности сравнивают так: `array_diff($array1[0], $array2[0]);`.

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

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

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