vprintf()参数太少

时间:2015-10-03 19:20:27

标签: php

我有这个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,错误就消失了,但为什么呢?

1 个答案:

答案 0 :(得分:1)

这里的问题是你在<{1}} 之前移动指针获得当前值。

因此,当指针指向您的最后一个元素时,您可以使用$csvFile向前移动它。那么现在的元素是什么?我认为它是空的。

您需要做的只是在 next之后使用next 或者使用vsprintf检查当前值是否为有效值。