PHP docs说明从 5.4 版及以后的版本:
Iterator support was added, as mysqli_result now implements 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();
我得到错误:
Call to undefined method mysqli_result::rewind()
?!
最佳答案
mysqli_result 确实实现了 Iterator 函数,它们只是没有暴露给用户空间(source)。但是,您可以将 mysqli_result 包装在 IteratorIterator 中。 .
$it = new \IteratorIterator($result);
$it->current(); // or rewind(), next()
IteratorIterator 直接使用 C 实现,因此不受 userland 可访问性限制。
关于php - mysqli_result 好像没有实现 Iterator 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51693564/