PHP 对象迭代
phpserver side programmingprogramming更新于 2025/8/19 20:07:17
简介
从 PHP 5 开始,可以迭代对象所有可见项的列表。迭代可以使用 foreach 循环以及 iterator 接口执行。PHP 中还有一个 IteratorAggregate 接口可用于此目的
使用 foreach 循环
示例
<?php
class myclass{
private $var;
protected $var1;
public $x, $y, $z;
public function __construct(){
$this->var="private variable";
$this->var1=TRUE;
$this->x=100;
$this->y=200;
$this->z=300;
}
public function iterate(){
foreach ($this as $key => $value) {
print "$key => $value
";
}
}
}
$obj = new myclass();
foreach($obj as $key => $value) {
print "$key => $value
";
}
echo "
";
$obj->iterate();
?>
输出
输出如下 −
x => 100 y => 200 z => 300 var => private variable var1 => 1 x => 100 y => 200 z => 300
使用迭代器接口
此接口定义了以下抽象方法,将在以下示例中实现
abstract public current ( void ) : mixed abstract public key ( void ) : scalar abstract public next ( void ) : void abstract public rewind ( void ) : void abstract public valid ( void ) : bool
Iterator::current — 返回当前元素
Iterator::key — 返回当前元素的键
Iterator::next — 前进到下一个元素
Iterator::rewind — 将迭代器倒退到第一个元素
Iterator::valid —检查当前位置是否有效
以下示例通过实现 Iterator 接口演示对象迭代
示例
<?php
class myclass implements Iterator{
private $arr = array('a','b','c');
public function rewind(){
echo "rewinding
";
reset($this->arr);
}
public function current(){
$var = current($this->arr);
echo "current: $var
";
return $var;
}
public function key() {
$var = key($this->arr);
echo "key: $var
";
return $var;
}
public function next() {
$var = next($this->arr);
echo "next: $var
";
return $var;
}
public function valid(){
$key = key($this->arr);
$var = ($key !== NULL && $key !== FALSE);
echo "valid: $var
";
return $var;
}
}
$obj = new myclass();
foreach ($obj as $k => $v) {
print "$k: $v
";
}
?>
输出
以上代码产生以下结果−
rewinding valid: 1 current: a key: 0 0: a next: b valid: 1 current: b key: 1 1: b next: c valid: 1 current: c key: 2 2: c next: valid:

