HTML_Table返回不正确的输出

时间:2013-07-24 01:19:45

标签: php pear html-table

我正在尝试使用PEAR::HTML_Table包从多维数组生成一个表$ data。

这是$ data的转储:

Array
(
    [0] => Array
        (
            [0] => Office
            [1] => Canvasser
            [2] => Fundraising Hrs
            [3] => PAC/Hr no PFU
            [4] => PAC $ no PFU
        )
    [1] => Array
        (
            [0] => TBS1
            [1] => Vatcher, Georgia
            [2] => 29
            [3] => 8.295
            [4] => 481
        )
)

编辑:第一个数组是我的THEAD标记行,任何其他数组都是TBODY标记中的行。

这是我的代码:

$data = $worksheet->toArray('', true, false, false); // PHPExcel

// build table
$table = new HTML_Table(array('class' => 'dt'), 0, true);
$thead =& $table->getHeader();
$tbody =& $table->getBody();

// loop through rows
for ($r = 0, $lr = count($data); $r < $lr; $r++) {
    // loop through columns
    for ($c = 0, $lc = count($data[$r]); $c < $lc; $c++) {
        if ($r == 0) {
            $thead->setCellContents($r, $c, $data[$r][$c]);
        } else {
            $tbody->setCellContents($r, $c, $data[$r][$c]);
        }
    }
}

// output html
echo $table->toHtml();

当它输出HTML时,它返回一个表格,其中包含TBODY标签中有空白单元格的额外行。我似乎无法弄清楚它为什么这样做。对我来说,获取正确的输出非常重要,因为我将此输出发送回JavaScript文件以进行进一步处理。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您需要重置tbody中行的计数器。

第一个正文单元格获取坐标(1,0),但应该有(0,0) - 行位置从0开始,而不是从1开始。所以你隐含告诉HTML_Table之前添加一个清除行你的第一行。

要解决此问题,请在$r - 1块中使用$r代替else。并了解foreach()