PHP docs指出从5.4版开始:
添加了Iterator支持,因为 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();
我得到了错误:
调用未定义的方法mysqli_result :: rewind()
?!
答案 0 :(得分:5)
mysqli_result确实实现了Iterator函数,只是它们没有暴露给用户区(source)。但是,您可以将mysqli_result包装在IteratorIterator中。
$it = new \IteratorIterator($result);
$it->current(); // or rewind(), next()
IteratorIterator直接使用C实现,因此不限于用户区域可访问性限制。