我在PHP中有一个函数,它创建一个包含CSV文件数据的HTML表。
问题是每个表的标题是两次打印。首先是<th>
,然后是第一个<tr>
。我希望标题仅打印在<th>
而不是以下<tr>
中。
什么是错误,你有其他PHP功能的建议。
csv示例
title a, Titel A
example1, Beispiel1
example2, Beispiel2
title b, Titel B
example1, Beispiel1
example2, Beispiel2
php功能
function CreateLangTable($csvFile, $startRow, $endRow, $number) {
global $lang_code1, $lang_code2, $vocabulary_group, $urlArray;
if ($endRow < $startRow) {
return;
}
echo '
<a id="' . $vocabulary_group[$urlArray[4]][$number] . '"></a>
<div class="table-responsive">
<table class="table table-hover table-bordered table-striped table-fixed">
<thead class="blue-grey lighten-4">';
$csvFile->seek($startRow);
vprintf('
<tr>
<th><div data-text="%1$s" data-lang="' . $lang_code1 . '" class="trigger_play"> %1$s</div></th>
<th><div data-text="%2$s" data-lang="' . $lang_code2 . '" class="trigger_play"> %2$s</div></th>
</tr>
</thead>
<tbody>', $csvFile->current());
while ($csvFile->key() <= $endRow) {
vprintf('
<tr>
<td><div data-text="%1$s" data-lang="' . $lang_code1 . '" class="trigger_play"> %1$s</div></td>
<td><div data-text="%2$s" data-lang="' . $lang_code2 . '" class="trigger_play"> %2$s</div></td>
</tr>', $csvFile->current());
$csvFile->next();
}
echo '
</tbody>
</table>
</div>' . "\n";
}
if ($urlArray[3] == "vokabeln" && isset($urlArray[4])) { // Undefined offset: 3 [only until /url1/url2/]
$file = new SplFileObject($_SERVER['DOCUMENT_ROOT'] . "/$urlArray[1]/csv/$urlArray[4].csv");
$file->setFlags(SplFileObject::READ_CSV);
}
php代码,用于生成此CSV示例的HTML表格:
CreateLangTable($file, 0, 2, 0);
CreateLangTable($file, 4, 6, 1);
答案 0 :(得分:2)
$csvFile->seek($startRow);
行获取指向标题的指针
然后while ($csvFile->key() <= $endRow)
从同一点开始循环。
在'while()'之前应该有一个$csvFile->next();
这是
$csvFile->next();
while ($csvFile->key() <= $endRow) {...}