array_diff
(PHP 4 >= 4.0.1, PHP 5, PHP 7)
array_diff — Вычислить расхождение массивов
Описание
$array
, array ...$arrays
) : array
Сравнивает array
с одним или несколькими другими массивами
и возвращает значения из array
, которые отсутствуют
во всех других массивах.
Список параметров
-
array
-
Исходный массив
-
arrays
-
Массивы, с которыми идет сравнение
Возвращаемые значения
Возвращает массив (array), содержащий элементы
array
, отсутствующие в любом из всех остальных
массивов.
Ключи в массиве array
сохраняются.
Примеры
Пример #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 )
Пример #2 Пример использования array_diff() с несовпадающими типами
Два элемента считаются равными тогда и только тогда, когда
(string) $elem1 === (string) $elem2
. То есть,
когда строковое представление одинаково.
<?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);
// $result теперь содержит один экземпляр S('a');
?>
Чтобы использовать альтернативную функцию сравнения, смотрите array_udiff().
Примечания
Замечание:
Обратите внимание, что эта функция обрабатывает только одно измерение n-размерного массива. Естественно, вы можете обрабатывать и более глубокие уровни вложенности, например, используя
array_diff($array1[0], $array2[0]);
.
Смотрите также
- array_diff_assoc() - Вычисляет расхождение массивов с дополнительной проверкой индекса
- array_udiff() - Вычисляет расхождение массивов, используя для сравнения callback-функцию
- array_intersect() - Вычисляет схождение массивов
- array_intersect_assoc() - Вычисляет схождение массивов с дополнительной проверкой индекса