PHP可迭代
定义和用法
从7.1版开始,PHP提供了一种称为iterable的新伪类型。实现了Traversable接口的任何对象(例如数组)。该类型使用foreach构造或生成器函数,一次生成一个值。
语法
函数可以将其参数作为类型进行迭代,以使该函数接受foreach语句中使用的一组值。如果该参数不支持foreach循环,则PHP解析器将抛出TypeError
示例
<?php $arr1=array("PHP","Java","Python"); function myfunc (iterable $arr1){ foreach ($arr1 as $lang){ echo $lang . "\n"; } } myfunc($arr1); ?>
输出结果
这将产生以下结果-
PHP Java Python
PHP函数还可以返回可迭代的数据类型,例如数组。我们使用 is_iterable()函数来验证返回值的类型。
示例
<?php function newfunc ():iterable{ $arr2=[]; for ($i=1;$i<4;$i++){ $arr2[$i]=$i*2; } return $arr2; } $ret=newfunc(); var_dump (is_iterable($ret)); ?>
输出结果
这将产生以下结果-
bool(true)
以下是具有可迭代返回类型的生成器的示例
示例
<?php function gen(): iterable { yield 1; yield 2; yield 3; } gen(); ?>
PHP版本
PHP7.1中引入了可迭代的伪类型