【发布时间】:2014-12-29 19:05:13
【问题描述】:
我在使用 PDO 从数据库中获取一些 PHP 代码时遇到问题,我想知道是否有人可以帮助我解决这个问题。我有一个从数据库中获取事件并在数组中返回结果的类。
相关部分代码为:
$seminars = array();
$sql = 'select * from seminars';
$stmt = $this->dbconn->query($sql);
$stmt->setFetchMode(PDO::FETCH_INTO, new SeminarEvent);
foreach($stmt as $seminar) {
echo "<p>Seminar Row: ".var_dump($seminar)."</p>"; // Prints the unique row
$seminars[] = $seminar;
echo "<p>";var_dump($seminars);echo "</p>"; // Debug
}
(SeminarEvent 是我编写的一个类,其中包含带有 getter 和 setter 的相关字段,这些字段已包含在标题中)
我在 php.net 上的文档中读到 $array[] = $elem 和 array_push($array, $elem) 都将 $elem 添加到数组的末尾,所以我尝试使用两者和我得到了相同的结果:
对我来说是个问题的部分是向数组添加 $seminar 是替换整个数组中的所有值。使用 array_merge 时也会发生这种情况。 var_dump 的输出显示数组大小增加了 1(如预期的那样),但是每次我向数组中添加一个项目时,所有值都被新插入的项目替换。我已经在另一台服务器上尝试过这段代码,我得到了完全相同的结果。
我在这里遗漏了一些简单的东西吗?
编辑: 我添加了一个额外的行以从 foreach 循环中打印出当前的 $seminar 并且每次输出都不同,因此 $seminar 正确地引用了语句中的每一行但是 $seminars 数组仅包含添加到的最后一项数组。
【问题讨论】: