php - mysqli_result 好像没有实现 Iterator 接口(interface)

标签 php mysqli iterator

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/

相关文章:

php - 有人可以解释一下关于 mysqli close 函数的声明吗?

php - 如何在 while 循环中获取某些数据而不重新分配

c++ - OutputIterator 与 std::back_inserter 和 std::ostream_iterator 有何关系?

java - 在Java中,调用set.iterator(),这个方法的内部流程是怎样的?

curry 时的 Groovy 错误

PHP 简单 HTML DOM 解析器 : Select only DIVs with multiple classes

php - 无法使用 "WHERE s_id IN ($array)"在 mysql 中选择项目

php - 如何在mysql中选择整个星期的星期一到星期日?

php - 重定向到 SSL 页面的所有流量

php - 如何在网站中包含 Facebook 页面