我有这个php错误,但脚本有效。我认为第一个vprintf()
是正确的,只有第二个vprintf()
有此错误。
vprintf(): Too few arguments
function CreateLangTable($csvFile, $startRow, $endRow, $number) {
global $lang_code1, $lang_code2, $vocabulary_group, $teilurl;
if ($endRow < $startRow) {
return;
}
echo '
<a id="' . $vocabulary_group[$teilurl[4]][$number] . '"></a>
<table class="table-vocabulary">
<thead>';
$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) {
$csvFile->next();
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());
}
echo '
</tbody>
</table>' . "\n";
}
我已经在sprintf()问题的另一个答案中读到$
为\$
,但后来我会收到很多错误。
示例csv文件
th-value 1,th-Wert 1
value 2,Wert 2
value 3,Wert 3
value 4,Wert 4
value 5,Wert 5
th-value 1,th-Wert 1
value 2,Wert 2
value 3,Wert 3
value 4,Wert 4
value 5,Wert 5
我曾使用此代码生成正确的表:
CreateLangTable($file, 0, 4, 0);
CreateLangTable($file, 6, 9, 1);
如果我改变4到3和9到8,错误就消失了,但为什么呢?
答案 0 :(得分:1)
这里的问题是你在<{1}} 之前移动指针获得当前值。
因此,当指针指向您的最后一个元素时,您可以使用$csvFile
向前移动它。那么现在的元素是什么?我认为它是空的。
您需要做的只是在 next
之后使用next
或者使用vsprintf
检查当前值是否为有效值。