PHP 可迭代对象
PHP - 什么是 Iterable?
可迭代对象是任何可以循环遍历的值 foreach()
环形。
这 iterable
伪类型是在 PHP 7.1 中引入的,它可以作为函数参数和函数返回值的数据类型。
PHP - 使用可迭代对象
这 iterable
关键字可以用作函数参数的数据类型或函数的返回类型:
例子
使用可迭代函数参数:
<?php
函数 printIterable(可迭代 $myIterable) {
foreach($myIterable 作为 $item) {
回显 $item;
}
}
$arr = ["a", "b", "c"];
打印Iterable($arr);
?>
亲自尝试 »
例子
返回一个可迭代对象:
<?php
函数 getIterable():可迭代 {
返回 ["a", "b", "c"];
}
$myIterable = 获取Iterable();
foreach($myIterable 作为 $item) {
回显 $item;
}
?>
亲自尝试 »
PHP - 创建可迭代对象
数组
所有数组都是可迭代的,因此任何数组都可以用作需要可迭代的函数的参数。
迭代器
任何实现 Iterator
接口可以用作需要可迭代函数的参数。
迭代器包含一个项目列表,并提供循环遍历这些项目的方法。它保留指向列表中某个元素的指针。列表中的每个项目都应有一个可用于查找该项目的键。
迭代器必须具有以下方法:
current()
- 返回指针当前指向的元素。可以是任何数据类型key()
返回列表中当前元素关联的键。它只能是整数、浮点数、布尔值或字符串next()
将指针移动到列表中的下一个元素rewind()
将指针移动到列表中的第一个元素valid()
如果内部指针未指向任何元素(例如,如果在列表末尾调用 next()),则应返回 false。在任何其他情况下,它都返回 true
例子
实现 Iterator 接口并将其用作可迭代对象:
<?php
// 创建一个迭代器
类 MyIterator 实现迭代器 {
私人$项目= [];
私有$pointer = 0;
公共函数__construct($items) {
// array_values() 确保键是数字
$this->items = array_values($items);
}
公共函数当前(){
返回 $this->items[$this->pointer];
}
公共函数键(){
返回 $this->pointer;
}
公共函数next(){
$这个->指针++;
}
公共函数倒带(){
$this->指针 = 0;
}
公共函数有效(){
// count() 表示列表中有多少个项目
返回 $this->pointer < count($this->items);
}
}
// 使用可迭代对象的函数
函数 printIterable(可迭代 $myIterable) {
foreach($myIterable 作为 $item) {
回显 $item;
}
}
// 将迭代器用作可迭代对象
$iterator = 新的 MyIterator(["a", "b", "c"]);
打印Iterable($iterator);
?>
亲自尝试 »