0

我正在使用下面的代码根据从 csv 文件的导入将数据添加到 csv 文件中。当我将新数据写入新的 csv 文件时,一切正常!但我想将新数据附加到新列中。我将尝试用一个例子来解释。

原始 csv 的第一列包含 Id。这些 id 用于从远程网站获取数据。此数据保存到名为 csv_array() 的数组中;:

$id = array();
if (($handle = fopen($filename, 'r')) !== false)
{
    while (($data = fgetcsv($handle, 1000, ";")) !== false)
    {
        if ($data[0] != null)
        {
            $id[] = $data[0];
        }
    }
    fclose($handle);
}

$csv_array = array();
foreach ($id as $product_id)
{
     array_push($csv_array, $arr = array_merge(array('id' => $product_id), $product_info, $images));
}

下一步是将此数据插入到新的 .csv 文件中。

function export($csv_array)
{
    $filename = "info.csv";
    $fp = fopen($filename, 'w');
    fputcsv($fp, array_keys($csv_array[0]), ';');
    foreach ($csv_array as $fields)
    {
        fputcsv($fp, $fields, ';');
    }
    fclose($fp);
}

这一切都有效,但我想将新数据附加到原始 csv 的三个新列中。我尝试使用 $fp = fopen($filename, 'a'); 但这会将新数据附加到 csv 的末尾,而不是三个新列。谁能给个提示:)

4

1 回答 1

0

您需要将新列添加到$csv_array(在调用 fputscsv 之前)。在代码中添加它们的最佳位置是:

$csv_array = array();
foreach ($id as $product_id)
{
    array_push(
       $csv_array,
       $arr = array_merge(array('id' => $product_id), $product_info, $images, $your_new_columns_for_this_row)
    );
}
于 2014-03-25T19:00:36.210 回答