Iterables is a new type in PHP7.1+.
Iterable can be used as a parameter type to indicate that a function requires an array or instance of Traversable.
<?php function iterable(iterable $iterable) { foreach ($iterable as $value) { echo $value.PHP_EOL; } } $data = array(1,2,3,4,5); iterable($data); ?>
Output
1 2 3 4 5
Iterable can also be used as a return type to indicate a function will return an iterable value.
<?php function bar(): iterable { return [1, 2, 3]; } $arr = bar(); foreach ($arr as $value) { echo $value.PHP_EOL; } ?>
Functions declaring iterable as a return type may also be generators.
<?php function gen(): iterable { yield 1; yield 2; yield 3; } $res = gen(); var_dump($res); // a generator object implementing the Traversable interface. // so it's iterable using foreach foreach($res as $value){ echo $value.PHP_EOL; } echo PHP_EOL; $generator = gen(); // $generator is an generator object while( $generator->valid()){ echo $generator->current().PHP_EOL; $generator->next(); } ?>
object(Generator)#1 (0) { } 1 2 3 1 2 3