2013-02-15 261 views
1

getHistory從雅虎財務API下載CSV文件,我試圖獲取CSV文件,並在文件中插入每個條目的符號infront。在完成之後,我想將CSV文件寫回$ symbol.csv。我的數據是我想要的,我似乎不能將它寫入CSV文件。我究竟做錯了什麼?或者有更好的方法去解決這個問題嗎?寫入csv文件

$row = 1; 
if (($handle = fopen(getHistory("T","2010-06-1"), "r")) !== FALSE) { 
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
     $num = count($data); 
     if($row = 1){array_unshift($data,"Symbol"); } 
     else { array_unshift($data, "T"); } 
     $fp = fopen('t.csv', 'w'); 
     fputcsv($fp, $data); 
     fclose($fp); 
     $row++; 
    } 
} 
fclose($handle); 
+0

在你的循環之前放置'$ fp = fopen('t.csv','w');'在它之後放置'fclose($ fp);'。您不需要在*每次迭代中打開/關閉文件。 – 2013-02-15 16:35:05

+0

另外,使用'=='或'==='進行比較。 'if($ row === 1)' – 2013-02-15 16:36:57

+0

謝謝修復它。而且我知道如何使用==我就這麼說了。但移動fopen甚至沒有發生在我身上 – brandenwagner 2013-02-15 16:40:41

回答

1

在你的循環,你打開和關閉在每個迭代文件。您應該在循環之前打開csv文件,添加它,然後在循環完成時關閉它。

此外,您應該使用=====進行比較。

$row = 1; 
if (($handle = fopen(getHistory("T","2010-06-1"), "r")) !== FALSE) { 
    // This truncates the file to zero length 
    // so, we only need to do this once, before the loop 
    $fp = fopen('t.csv', 'w'); 
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
     $num = count($data); 
     if($row === 1){array_unshift($data,"Symbol"); } 
     else { array_unshift($data, "T"); } 
     fputcsv($fp, $data); 
     $row++; 
    } 
    // Close it once we're all done 
    fclose($fp); 
} 
fclose($handle);