array_diff

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

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

Описание

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() - Вычисляет пересечение массивов с дополнительной проверкой индекса