1

有以下代码:

<?php 

    include 'connection.php'; //$db is declared here. It's a PDO object.

    foreach ($db->query("SELECT * FROM names") as $row) {
        echo $row['firstname'] . $row['lastname'] . $row['postcode'] . '<br>';
    }

?>

代码按预期工作,但我不明白它背后的逻辑。

我在 php.net 上读过,它PDO::query()返回一个PDOStatement对象作为结果集。所以理论上,这部分:$db->query("SELECT * FROM names")是一个PDOStatement对象。

如何foreach循环遍历一个PDOStatement对象?它是否将PDOStatement对象转换为关联数组?为什么这部分不是:$db->query("SELECT * FROM names") as $row给出错误?

4

1 回答 1

2

PDOStatement实现Traversable接口,这意味着它可以在foreach循环中使用。

于 2017-01-02T12:18:49.393 回答