function intersect()

in src/keyset/select.php [151:175]


function intersect<Tv as arraykey>(
  Traversable<Tv> $first,
  Traversable<Tv> $second,
  Container<Tv> ...$rest
)[]: keyset<Tv> {
  if (!$first || !$second) {
    return keyset[];
  }
  $intersection = keyset($first);
  $rest[] = $second;
  foreach ($rest as $traversable) {
    $next_intersection = keyset[];
    $keyed_traversable = keyset($traversable);
    foreach ($intersection as $value) {
      if (C\contains_key($keyed_traversable, $value)) {
        $next_intersection[] = $value;
      }
    }
    if (!$next_intersection) {
      return keyset[];
    }
    $intersection = $next_intersection;
  }
  return $intersection;
}