mysqli_result似乎没有实现Iterator接口

Cod*_*4R7 2 php mysqli iterator

PHP文档指出,从版本5.4及以后:

添加了迭代器支持,因为mysqli_result现在实现了Traversable.

这意味着,mysqli_result必须实施的迭代方法current(),key(),next(),rewind()valid().

但是当我这样做时:

/** @var \mysqli */
$rStmt = $oMySQLi->prepare('<valid query>');
$rStmt->execute();
/** @var \mysqli_result */
$rRes = $rStmt->get_result();
$rRes->rewind();
Run Code Online (Sandbox Code Playgroud)

我收到错误:

调用未定义的方法mysqli_result :: rewind()

?!

Pet*_*ete 5

mysqli_result确实实现了Iterator函数,它们只是不暴露给userland(source).但是,您可以在IteratorIterator中包装mysqli_result .

$it = new \IteratorIterator($result);
$it->current(); // or rewind(), next()
Run Code Online (Sandbox Code Playgroud)

IteratorIterator直接使用C实现,因此不限于userland accessibilty限制.