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()
?!
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限制.