我是php + Zend编程的新手,所以需要你宝贵的建议。 1.我在mysql(phpmyadmin)中有一个表,表中的属性是~user_id,expense_id,date month,year,expense。 2.我在View文件夹(Zend 2.2)中有.phtml文件(index.phtml)。它由Controller页面中的indexAction()访问。代码:
返回viewmodel(return array =>( '年'=> $这 - > getExpenseTable() - >使用fetchall($ USER_ID); )),
[抱歉,如果格式不正确]。当我将它放入带有foreach的表中时,此函数用于返回db中的所有值。 index.phtml中的代码如下:
escapeHtml($ expense->费用);?> .....等等......
现在我的问题是: a)我不能在另一个表中使用变量'years'与同一index.phtml文件中的另一个foreach循环。它说,“这是一个前瞻性的结果集。”我尝试实现unset()和rewind(),两者都不起作用。 b)我想从表中获取属性“year”的唯一值(如您可能认为的表格标题),并将每年的费用总和。
答案 0 :(得分:0)
你有多个问题,或许应该包含在多个问题中,但无论如何,这里有:
在单个结果集上多次迭代:
某些驱动程序允许缓冲。 $years
的值是Zend ResultSet对象。您可以在循环之前调用$years->buffer()
以启用内部缓冲区,以便您可以迭代两次:
// $set is ResultSet
$set->buffer();
foreach ($set as $result) {} // first time
foreach ($set as $result) {} // second time
提取年份:
您可以使用简单的视图逻辑:
// example resultset
$result = array(
array('year' => '2012', 'value' => 'foo'),
array('year' => '2012', 'value' => 'bar'),
array('year' => '2013', 'value' => 'baz'),
);
// store year for check
$year = null;
foreach ($result as $item) {
if ($item['year']) !== $year) {
$year = $item['year'];
echo $year;
}
echo $item['value'];
}