1

getHistory 从 Yahoo Finance API 下载 CSV 文件,我正在尝试获取 CSV 文件,并在文件中每个条目的前面插入符号。完成后,我想将 CSV 文件写回 $symbol.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);
4

1 回答 1

1

在您的循环中,您将在每次迭代时打开和关闭文件。您应该在循环之前打开 csv 文件,添加到其中,然后在循环完成后关闭它。

此外,您应该使用===or==进行比较。

$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);
于 2013-02-15T16:42:54.050 回答