0

我是 php+Zend 编程的新手,所以需要您的宝贵意见。1.我在mysql(phpmyadmin)中有一张表,表中的属性有~user_id,expense_id,日期月份,年份,费用。2. 我在 View 文件夹 (Zend 2.2) 中有 .phtml 文件 (index.phtml)。它由 Controller 页面中的 indexAction() 访问。代码:

return viewmodel ( return array=>( 'years'=>$this->getExpenseTable()->fetchAll($user_id); )),

[抱歉,如果格式不正确]。当我将它放入带有 foreach 的表中时,此函数旨在返回数据库中的所有值。index.phtml 中的代码如下:

escapeHtml($expense->expense);?> .....等等......

现在我的问题是:a) 我不能在同一个 index.phtml 文件中使用另一个表中的变量 'years' 和另一个 foreach 循环。它说,“这是一个只向前的结果集。” 我尝试实现 unset() 和 rewind(),都没有工作。b)我想从表格中获取属性“年份”的唯一值(您可能会认为是表格标题),并将费用总和放在每年的下方。

4

1 回答 1

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'];
}
于 2013-07-13T13:39:38.160 回答