在PHP中,迭代器是实现Traversable 接口的对象,它们允许在可遍历的数据集合上进行迭代。迭代器可以用于遍历数组、文件行、数据库查询结果等各种数据类型。
以下是一个使用ArrayIterator迭代器遍历数组的示例代码:
$fruits = array("apple", "banana", "orange");
$it = new ArrayIterator($fruits);
foreach ($it as $fruit) {
echo $fruit . "
";
}
以下是一个使用迭代器遍历数据库查询结果的示例代码:
$db = new PDO("mysql:host=localhost;dbname=mydatabase", "username", "password");
$stmt = $db->query("SELECT name, email FROM users");
class UserIterator implements Iterator
{
private $position = 0;
private $stmt;
public function __construct(PDOStatement $stmt)
{
$this->stmt = $stmt;
}
public function rewind()
{
$this->position = 0;
}
public function current()
{
return $this->stmt->fetch(PDO::FETCH_ASSOC);
}
public function key()
{
return $this->position;
}
public function next()
{
$this->position++;
}
public function valid()
{
return $this->stmt->fetch() !== false;
}
}
$userIterator = new UserIterator($stmt);
foreach ($userIterator as $user) {
echo $user["name"] . " - " . $user["email"] . "
";
}
上面的代码创建了一个UserIterator迭代器,用于遍历查询结果集合中的用户数据。在foreach循环中,通过调用$UserIterator迭代器的current()方法获取每一次迭代的用户数据。