我无法使此循环正常运行。每当($records[$row][2] == $prevRow2)
我需要它来重新创建class =字段并且只关闭div = row时所在的组($records[$row][2] == $prevRow2)
。请帮忙!!
if (($handle = fopen('upload/ATLANTA.csv', "r")) !== FALSE) {
$prevRow2 = false;
$row=0;
while (($data = fgetcsv($handle, 1000, ","))) {
$num = count($data);
$records[] = $data;
echo "<div id=\"row\"><div id=\"num\">" .$row. "</div>";
echo 'Is '. $prevRow2 . 'the same as ' .$records[$row][2];
if ($records[$row][2] == $prevRow2) {
for ($c=0; $c < $num; $c++) {
if ($c != 1) {
echo "<div class=\"field\">" . $data[$c] . "</div>";
}
}
$prevRow2 = $records[$row][2];
$row++;
echo "<div id=\"filler\"></div>";
}//if close
else {
for ($c=0; $c < $num; $c++) {
if ($c != 1) {
echo "<div class=\"field\">" . $data[$c] . "</div>";
}
}
$prevRow2 = $records[$row][2];
$row++;
}//close else
echo '</div>';
}//close while
fclose($handle);
}
答案 0 :(得分:0)
$ row似乎为null,直到您创建行$ ++ ++;
答案 1 :(得分:0)
您的数据的某些输出和/或进一步描述确实会有所帮助,但我注意到了一些事情。
1 - 除了这个填充div之外,你关闭if和else做同样的事情。我觉得这不是你想要的,但我真的不明白,不知道该怎么做。
for ($c=0; $c < $num; $c++) { if ($c != 1) { echo "<div class=\"field\">" . $data[$c] . "</div>"; } } $prevRow2 = $records[$row][2]; $row++;
此代码对于if和else块都是通用的,因此无论如何都会执行。那是你要的吗?如果是这样,你也可以将它从if移出,只将填充div移动到if中,否则没有。
2 - $ record和$ records [$ row]的目的是什么。据我所知,每当使用时,$ record [$ row] === $ data。
3 - id = row的div在每个while循环结束时关闭。你似乎建议你不要这样,如果你只在$ records [$ row] [2] AKA $ data [2]匹配前一次迭代时才这样做,我认为你的HTML不会很好。
4 - 尝试使用foreach而不是你的foor循环
答案 2 :(得分:0)
看起来公司实际上是指数3,而不是2.
$prevData3 = false; $row=0; while (($data = fgetcsv($handle, 1000, ","))) { if ($data[2] != $prevData2) { if ($prevData2) echo '</div>'; echo "<div id=\"row\"><div id=\"num\">" .$row. "</div>"; row++; } else echo "<div id=\"filler\"></div>"; foreach ($data as $d) { if ($c != 1) { echo "<div class=\"field\">" . $d . "</div>"; } } echo "<br />"; $prevData2 = $data[2]; }
echo CLOSE_DIV;