Skip to main content

zip

Note

This is a point-in-time snapshot of the API documentation from January 2026. Going forward, we will not be maintaining a public copy of these references, and recommend users to refer to the built-in signature helpers available in the Hack LSP instead for complete and up-to-date information.

Throws an exception unless the current Set or the Traversable is empty

public function zip<Tu>(
Traversable<Tu> $traversable,
): Set<HH\nothing>;

Since Sets only support integers or strings as values, we cannot have a Pair as a Set value. So in order to avoid an InvalidArgumentException, either the current Set or the Traversable must be empty so that we actually return an empty Set.

Parameters​

Returns​

Examples​

This example shows that zip won't thrown an Exception if at least one of the current Set or the $traversable is empty:

// The $traversable is empty so the result will be empty
$s = Set {'red', 'green', 'blue', 'yellow'};
$zipped = $s->zip(Vector {});
\var_dump($zipped);

// The Set $s is empty so the result will be empty
$s = Set {};
$zipped = $s->zip(Vector {'My Favorite', 'My Second Favorite'});
\var_dump($zipped);

This example shows that zip will throw an Exception if the result is non-empty:

$s = Set {'red', 'green', 'blue', 'yellow'};
$zipped = $s->zip(Vector {'My Favorite', 'My Second Favorite'});
\var_dump($zipped);