0

Undefined offset: -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[年][i] の前の値が前の $rows[年][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
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 に答える
0

「未定義のオフセット」は、ほとんどの場合、1 つずつずれているエラーであり、ここに原因があります。

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

次の場合は、この行を呼び出さないでください。$i == 0

于 2012-08-22T14:10:49.130 に答える