(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)
array_diff — Вычисляет расхождение массивов
Функция сравнивает массив 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]);
.