0

次のように、変数のタブ区切りの内容を XML に書き込もうとしています。

$tsvData = str_getcsv($input, "\t");
foreach($tsvData as $line => $row) {
    if($line > 0) {
        $xmlWriter->writeElement('NAME', $row[0]);
        $xmlWriter->writeElement('CAKE', $row[1]);
        $xmlWriter->writeElement('BODYPART', $row[2]);
    }
}

ただし、各タブ間にすべてを書き込むのではなく、XML タグごとに 1 文字だけを書き込みます。SplFileObject を使用して、同じ tsv データをファイルから取得すると、機能します。str_getcsv 関数の何が間違っていますか?

ありがとう

4

1 に答える 1

1

関数はstr_getcsv()1 次元配列を返しますが、2 次元配列を返すように扱っています。

編集:

明確にするために、str_getcsv()「線」の概念はありません。これを行う代わりに:

$tsvData = str_getcsv($input, "\t");

それぞれが列の配列を含む行の配列を取得すると考えて、次のようにする必要があります。

$lines = explode("\n", $input);
$tsvData = array();
foreach ($lines as $line) {
    $tsvData[] = str_getcsv($line, "\t");
}
// now $tsvData is a 2-dimensional array of lines/columns like you were wanting
于 2011-09-14T23:19:21.677 に答える