我收到此错误未定义的偏移量:-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]相同。如果它不同,它会打印出格式化的&lt; TR&gt;。
似乎是一种避免此错误的方法,首先要检查$ i的值是否为零,但我想知道是否还有其他方法。可能在我的if条件中。
答案 0 :(得分:1)
我认为最简单的方法是检查$ i> 0
if ($i > 0 && $rows[$year][$i] != $rows[$year][$i-1] ) {
// ...
}
答案 1 :(得分:0)
“Undefined offset”几乎总是一个一个错误,这就是罪魁祸首:
if ($rows[$year][$i] != $rows[$year][$i-1] ) {
-------------------------------------^^^^
如果$i == 0
答案 2 :(得分: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.
}