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.

📘 Naucz się w lekcji →