PHP课程

浏览13319
更新时间2025-08-06

PHP - 什么是 Iterable?

Iterable 是指任何可以使用 foreach() 循环遍历的值。

Iterable 伪类型在 PHP 7.1 中引入,它可以作为函数参数和函数返回值的数据类型。

PHP - 使用 Iterable

iterable 关键字可以用作函数参数的数据类型或函数的返回类型:

实例

使用 iterable 函数参数:

<?php
function printIterable(iterable $myIterable) {
  foreach($myIterable as $item) {
    echo $item;
  }
}

$arr = ["a", "b", "c"];
printIterable($arr);
?>
运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

返回 iterable

<?php
function getIterable():iterable {
  return ["a", "b", "c"];
}

$myIterable = getIterable();
foreach($myIterable as $item) {
  echo $item;
}
?>
运行实例 »

点击 "运行实例" 按钮查看在线实例

PHP - 创建 Iterable

数组

所有数组都是 iterable,因此任何数组都可以用作需要 iterable 的函数的参数。

迭代器

任何实现了 Iterator 接口的对象都可以用作需要 iterable 的函数的参数。

迭代器包含一个项目列表,并提供方法来循环遍历它们。它保持一个指向列表中某个元素的指针。列表中的每个项目都应该有一个可用于查找项目的键。

迭代器必须具有这些方法:

  • current() - 返回指针当前指向的元素。它可以是任何数据类型
  • key() 返回与列表中当前元素关联的键。它只能是整数、浮点数、布尔值或字符串
  • next() 将指针移动到列表中的下一个元素
  • rewind() 将指针移动到列表中的第一个元素
  • valid() 如果内部指针没有指向任何元素(例如,如果在列表末尾调用了 next()),则应返回 false。在任何其他情况下,它都返回 true

实例

实现 Iterator 接口并将其用作 iterable:

<?php
// 创建一个 Iterator
class MyIterator implements Iterator {
  private $items = [];
  private $pointer = 0;

  public function __construct($items) {
    // array_values() 确保键是数字
    $this->items = array_values($items);
  }

  public function current() {
    return $this->items[$this->pointer];
  }

  public function key() {
    return $this->pointer;
  }

  public function next() {
    $this->pointer++;
  }

  public function rewind() {
    $this->pointer = 0;
  }

  public function valid() {
    // count() 指示列表中有多少项
    return $this->pointer < count($this->items);
  }
}

// 一个使用 iterable 的函数
function printIterable(iterable $myIterable) {
  foreach($myIterable as $item) {
    echo $item;
  }
}

// 将迭代器用作 iterable
$iterator = new MyIterator(["a", "b", "c"]);
printIterable($iterator);
?>
运行实例 »

点击 "运行实例" 按钮查看在线实例

相关视频

更多

免费

php8,我来也
初级php8,我来也

33.5万次学习

收藏

免费

Thinkphp6.0正式版视频教程
中级Thinkphp6.0正式版视频教程

39.2万次学习

收藏

免费

细说PHP第一季
中级细说PHP第一季

30.3万次学习

收藏

精品课程

更多
前端入门_HTML5
前端入门_HTML5

共29课时

64.4万人学习

CSS视频教程-玉女心经版
CSS视频教程-玉女心经版

共25课时

40.9万人学习

JavaScript极速入门_玉女心经系列
JavaScript极速入门_玉女心经系列

共43课时

76万人学习

独孤九贱(1)_HTML5视频教程
独孤九贱(1)_HTML5视频教程

共25课时

63.7万人学习

独孤九贱(2)_CSS视频教程
独孤九贱(2)_CSS视频教程

共22课时

24.1万人学习

独孤九贱(3)_JavaScript视频教程
独孤九贱(3)_JavaScript视频教程

共28课时

35.8万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时

131.8万人学习

热门下载

更多
phpStudy 2018最新版
phpStudy 2018最新版

集成PHP7,16种组合,超全大合集

下载

VC9 32位
VC9 32位

VC9 32位 phpstudy集成安装环境运行库

下载

VC11 32位
VC11 32位

VC11 32位 phpstudy集成安装环境运行库​

下载

php程序员工具箱完整版
php程序员工具箱完整版

程序员工具箱 v1.0 php集成环境

下载

VC14 32位
VC14 32位

VC14 32位 phpstudy安装环境运行库

下载

SublimeText3汉化版
SublimeText3汉化版

中文版,非常好用

下载

Notepad++ Windows版
Notepad++ Windows版

Notepad++ 8.9.7 Windows版官方安装包,适合 Windows 用户进行代码编辑、文本处理、语法高亮和插件扩展配置。

下载