2011-09-14 79 views
0

我想寫一個變量的製表符分隔的內容,這樣的XML:製表符分隔字符串XML與PHP

$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

什麼'的var_dump ($ line)'和'var_dump($ tsvData)'? –

+0

$ tsvData的var_dump是正確的,但是$ line給了我一個int單個數組。 drrcknlsn在下面解釋。謝謝你的幫助。 – Matt

回答

1

str_getcsv()函數返回一個一維數組,但你對待它就像是返回一個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 
+0

啊,是的。我以爲它像SplFileObject一樣工作,但對於已經在頁面中保存的數據。謝謝你的幫助!這很好。 – Matt