2014-12-02 86 views
0

我的代碼循環通過一個CSV文件,將其轉換爲XML:PHP字符串concatination

<?php 
for ($i = 1; $i < $arraySize; $i++) { 
    $n = 0; 
    if (substr($csv[$i][0], 0, 1) == $let) { 
     $surName = $dom->createElement('name'); 
     $name = $csv[$i][0]; 
     $nameText = $dom->createTextNode($name); 
     $surName->appendChild($nameText); 

     $text = str_replace(chr(94), ",", $csv[$i][4]); 
     $n = $i + 1; 
     $next = $csv[$n][0]; 

     while ($next == 'NULL') { 
      $repl = str_replace(chr(94), ",", $csv[$n][4]); 
      $text = $repl; 

      $n++; 
      $next = $csv[$n][0]; 
     } 
     $bio = $dom->createElement('bio'); 
     $bioText = $dom->createTextNode($text); 
     $bio->appendChild($bioText); 
     $person = $dom->createElement('person'); 
     $person->appendChild($surName); 
     $person->appendChild($bio); 
     $people->appendChild($person); 
    } 
} 
$xmlString = $dom->saveXML(); 
echo $xmlString; 
?> 

的問題是$text = $repl;鍵入$text .= $repl;帶來:

 
error on line 1 at column 1: Document is empty. 

但省略了.只是給出最後文本行。 備份代碼工作: 公共功能測試($ let){csv = $ this-> readCSV(「data \ AlphaIndex1M.csv」); $ arraySize = sizeof($ csv); $ let = strtoupper($ let); // echo''; for $($ i = 1; $ i echo $ csv [$ i] [0]; //。' echo', - >'。$ csv [$ i] [4]; $ n = $ ($ next =='NULL'){ echo $ csv [0]; // if($ next =='NULL'){} echo $ csv [ $ N] [4]「「;。 $ N ++; $下一= $ CSV [$ N] [0];} // 回波 '' 回波 '';} } // 回波' ' }

+2

嘗試首先初始化$文字,如:' $ text =「」'(不在循環中) – Rizier123 2014-12-02 16:36:28

+0

看起來像其他事情正在進行,代碼示例不完整。不應該是'while($ next!= NULL){}'或更好'!is_null($ next)'?如果你有一個鋸齒形的CSV,看起來可能會由於硬編碼而出錯(如索引'[4]')。另外:你確定csv是有效的分析,這裏沒有數據。 – zanlok 2014-12-03 00:53:40

+0

我想到了這一點,所以我去了excel,用「Null」替換空白單元格,用'^'替換掉','。例如:ADAMS#221,ADAMS#221,Somersetshire^England,1640,John ADAMS b/d Somersetshire Eng;米艾格尼絲___。 [每Savage:約翰^裁縫^在Newbury^MA40在1640年。] NULL,SQUIRE,Braintree ,,亨利ADAMS b。薩默塞特^工程。 abt 1583;原稿。布蘭特裏的老闆;米Eng。^ 1609^Edith SQUIRE; d。 Braintree 1646. Pres的祖先。約翰亞當斯。 NULL,Braintree^Medfield,Medfield的Edward ADAMS^b。 Kingweston /薩默塞特^ Eng。 1629;米1652年在MA^Lydia PENNIMAN。 – Lynn 2014-12-03 02:57:43

回答

2

你必須初始化你的$text之前,你可以追加的東西!使用前

所以這樣寫:

$test = ""; 

(在while循環之前甚至for循環之前,如果你希望所有被追加)

+0

Nope,get本頁面包含以下錯誤: 錯誤在第2行第1列:在文檔結尾的額外內容 – Lynn 2014-12-02 21:53:18

+0

我沒有初始化$ text變量的愚蠢,愚蠢的錯誤。請爲我的問題投票,這樣我的提問禁令就可以解除,我的編程教育可以繼續下去。 – Lynn 2015-01-07 22:41:39

+0

@Lynn我已經這樣做了,但是如果他們想要的話,你不要求人們把它投票! – Rizier123 2015-01-07 22:42:47