我正在尝试将变量的制表符分隔内容写入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标签只写一个字符而不是每个标签之间的所有内容。当我使用SplFileObject时,从文件中获取相同的tsv数据,它可以工作。我对str_getcsv函数做错了什么?
由于
答案 0 :(得分:1)
str_getcsv()
函数返回一个1维数组,但你正在对它进行处理,就像它返回一个二维数组一样。
修改强>
澄清一下,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