array_udiff

funkcja

Zwraca elementy pierwszej tablicy, których wartości nie występują w pozostałych, używając własnej funkcji porównującej wartości.

array_udiff(array $array, array ...$arrays, callable $value_compare_func): array

array_udiff działa jak array_diff, ale zamiast domyślnego porównania stringowego używa podanego przez ciebie callbacku do porównywania wartości. Callback musi przyjąć dwa argumenty i zwrócić liczbę ujemną, zero lub dodatnią — tak jak przy usort. Klucze oryginalnej tablicy są zachowane. Przydaje się gdy porównujesz obiekty, struktury złożone lub chcesz własną logikę równości.

<?php
declare(strict_types=1);

$wszystkie = [3, 1, 4, 1, 5, 9, 2, 6];
$wykluczone = [1, 2, 3];

$wynik = array_udiff(
    $wszystkie,
    $wykluczone,
    fn(int $a, int $b): int => $a <=> $b
);

print_r($wynik);
// Array
// (
//     [2] => 4
//     [4] => 5
//     [5] => 9
//     [7] => 6
// )

Callback fn($a, $b) => $a <=> $b to standardowy komparator dla typów skalarnych. Dla obiektów możesz porównywać np. po właściwości id: fn($a, $b) => $a->id <=> $b->id.

📘 Naucz się w lekcji →