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.