0

我收到此错误未定义偏移量:-1。

我很确定这是因为我将数组索引的值与前一个索引的值进行比较,所以在第一次迭代时它失败了,因为没有 -1 索引。

for ($i=0; $i<$rows_n; $i++) 
{
    formatTR($i, $rows, 'YEAR');
}


// Function
function formatTR($i, $rows, $year) 
{

    if ($rows[$year][$i] != $rows[$year][$i-1] ) {
        print "<tr class='header-year-tr'><td colspan='2'>{$rows[$year][$i]}</td></tr>";
    }

    print "<tr>";
}

该函数检查 $rows[year][i] 的先前值是否与先前的 $rows[year][i-1] 相同。如果不同,它会打印出一个格式化的<TR>。

似乎避免此错误的一种方法是首先检查 $i 的值是否为零,但我想知道是否还有另一种方法。可能在我的条件下。

4

3 回答 3

1

我认为最简单的方法是检查 $i>0

if ($i > 0 && $rows[$year][$i] != $rows[$year][$i-1] ) {
  // ...
}
于 2012-08-22T14:13:06.033 回答
0

“未定义的偏移量”几乎总是一个错误,这是罪魁祸首:

if ($rows[$year][$i] != $rows[$year][$i-1] ) {
-------------------------------------^^^^

确保你永远不会调用这一行,如果$i == 0

于 2012-08-22T14:10:49.130 回答
0
function formatTR($i, $rows, $year) 
{
    if($i > 0){
        if ($rows[$year][$i] != $rows[$year][$i-1] ) {
        print "<tr class='header-year-tr'><td colspan='2'>{$rows[$year][$i]}</td></tr>";
        }
    }
    print "<tr>"; //not sure why you have this here.

}

如果你想$rows[$year][0]打印一个<tr>

function formatTR($i, $rows, $year) 
{
    if($i > 0){
        if ($rows[$year][$i] != $rows[$year][$i-1] ) {
          print "<tr class='header-year-tr'><td colspan='2'>{$rows[$year][$i]}</td></tr>";
        }
    } else {
        print "<tr class='header-year-tr'><td colspan='2'>{$rows[$year][$i]}</td></tr>";
    }
    print "<tr>"; //not sure why you have this here.

}
于 2012-08-22T14:14:20.683 回答