array_uintersect
funkcja
Zwraca elementy pierwszej tablicy, których wartości występują we wszystkich pozostałych, używając własnej funkcji porównującej wartości.
array_uintersect(array $array, array ...$arrays, callable $value_compare_func): array
array_uintersect to odpowiednik array_intersect z własnym callbackiem porównującym wartości. Element z pierwszej tablicy trafia do wyniku, gdy callback uzna go za równy (zwróci 0) z przynajmniej jednym elementem w każdej z pozostałych tablic. Klucze oryginalnej tablicy są zachowane. Funkcja sprawdza się przy porównywaniu obiektów lub gdy domyślne porównanie stringowe jest niewystarczające.
<?php
declare(strict_types=1);
$lista = [3, 1, 4, 1, 5, 9, 2, 6];
$filtr = [1, 3, 6];
$wynik = array_uintersect(
$lista,
$filtr,
fn(int $a, int $b): int => $a <=> $b
);
print_r($wynik);
// Array
// (
// [0] => 3
// [1] => 1
// [3] => 1
// [7] => 6
// )
Callback fn($a, $b) => $a <=> $b to standardowy komparator skalarny. Dla obiektów możesz porównywać po wybranej właściwości: fn($a, $b) => $a->id <=> $b->id.