Returns a subset of the current Set starting from a given key up to, but not including, the element at the provided length from the starting key


public function slice(
  int $start,
  int $len,
): Set<Tv>;

$start is 0-based. $len is 1-based. So slice(0, 2) would return the elements at key 0 and 1.

The returned Set will always be a proper subset of the current Set.


  • int $start - The starting value in the current Set for the returned Set.
  • int $len - The length of the returned Set.

Return Values

  • Set<Tv> - A Set that is a proper subset of the current Set starting at $start up to but not including the element $start + $len.



namespace Hack\UserDocumentation\API\Examples\Set\Slice;

$s = Set {'red', 'green', 'blue', 'yellow'};

// Start at index 1 ('green') and include 3 elements
$s2 = $s->slice(1, 3);

object(HH\Set)#2 (3) {
  string(5) "green"
  string(4) "blue"
  string(6) "yellow"