Перейти к содержимому

Как работает функция array_udiff() в PHP

В основе PHP лежит язык программирования, созданный для того, чтобы сделать веб-разработку проще и эффективнее. Одним из способов достижения этой цели является предоставление широкого набора встроенных функций, которые разработчики могут использовать для выполнения типовых задач.

Одной из таких функций является array_udiff(), которая позволяет сравнивать массивы и возвращать значения, присутствующие в первом массиве, но отсутствующие в последующих. В этой статье мы подробно разберём, как работает array_udiff(), и приведём примеры, которые помогут вам понять, как использовать её в своём коде.

Что такое array_udiff()?

Функция array_udiff() принимает два или более массивов в качестве аргументов и возвращает массив, содержащий все значения, присутствующие в первом массиве, но отсутствующие в любом из последующих. Эта функция сравнивает значения в массивах с помощью пользовательской функции обратного вызова (callback), что позволяет вам точно определить, как именно должны сравниваться значения.

Как использовать array_udiff()

Синтаксис функции array_udiff() выглядит следующим образом:

Синтаксис функции array_udiff() в PHP

php
array_udiff(array $array1, array $array2 [, array ... ], callable $value_compare_func): array

Давайте разберём каждый компонент этого синтаксиса:

  • array $array1: Первый массив для сравнения.
  • array $array2: Второй массив для сравнения.
  • array ...: Дополнительные массивы для сравнения (необязательно).
  • callable $value_compare_func: Пользовательская функция обратного вызова, которая сравнивает значения массивов.

Функция обратного вызова принимает два аргумента, представляющих сравниваемые значения. Она должна возвращать целое число меньше нуля, равное нулю или больше нуля, если первый аргумент соответственно меньше, равен или больше второго.

Ниже приведён пример, демонстрирующий, как использовать array_udiff() для сравнения двух массивов чисел:

Использование array_udiff() в PHP для сравнения двух массивов чисел

php
<?php

function compare_numbers($a, $b) {
    if ($a == $b) {
        return 0;
    } elseif ($a < $b) {
        return -1;
    } else {
        return 1;
    }
}

$array1 = [1, 2, 3, 4, 5];
$array2 = [2, 4, 6];

$result = array_udiff($array1, $array2, 'compare_numbers');

print_r($result);

?>

В этом примере мы определяем функцию compare_numbers(), которая принимает два аргумента и возвращает целое число, указывающее, какой аргумент больше. Затем мы передаём эту функцию в качестве четвёртого аргумента в array_udiff() вместе с двумя массивами, которые нужно сравнить.

Полученный массив, сохранённый в переменной $result, содержит значения 1, 3 и 5, которые присутствуют в $array1, но отсутствуют в $array2.

Дополнительные примечания

Вот несколько дополнительных моментов, которые следует учитывать при использовании array_udiff():

  • Функция сравнения должна быть допустимым вызываемым объектом PHP, например, именем функции или анонимной функцией.
  • Порядок передаваемых в качестве аргументов массивов имеет значение — первый массив сравнивается с остальными.
  • Результирующий массив будет содержать только значения из первого массива, которые не встречаются ни в одном из последующих массивов.
  • Результирующий массив сохраняет ключи и порядок значений из первого массива.

Заключение

В этой статье мы рассмотрели, как использовать функцию PHP array_udiff() для сравнения массивов и возврата значений, присутствующих в первом массиве, но отсутствующих в последующих. Мы увидели, как применять пользовательскую функцию обратного вызова для настройки процесса сравнения значений и продемонстрировали, как применить её в собственных проектах.

Практика

В чём заключается назначение функции array_udiff() в PHP?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.