PHP 提供了一些接口帮助遍历对象
1. 可遍历接口
//用来判断对象是否可以进行 foreach 遍历
interface Traversable {}
2. 迭代器 ( 对象同时为容器和迭代器 )
interface Iterator extends Traversable {
function current(); // 返回当前元素的值
function key(); // 返回当前元素的键
function next(); // 移动到下一个元素
function rewind(); // 重置到第一个元素
function valid(); // 检查当前位置是否有效
}
3. 聚合式迭代器 ( 容器与迭代器分离 )
interface IteratorAggregate extends Traversable {
function getIterator(); // 获取一个外部迭代器
}
4. 模拟数组 ( 数组式访问 )
interface ArrayAccess {
function offsetExists($offset); // 检查偏移是否存在
function offsetGet($offset); // 获得偏移位置的值
function offsetSet($offset, $value); // 设置偏移位置的值
function offsetUnset($offset); // 释放偏移位置
}
//这个接口允许对象像数组一样操作, 例如
isset($obj[$key]);
unset($obj[$key]);
$obj[] = $value;
$obj[$key] = $value;
print_r($obj);