добавить новые данные в существующий csv php

Я использую приведенный ниже код для добавления данных в CSV-файл на основе импорта из CSV-файла. Когда я записываю новые данные в новый CSV-файл, все выглядит нормально! Но я хотел бы добавить новые данные в новые столбцы. Попробую объяснить на примере.

Первый столбец исходного CSV содержит идентификаторы. Эти идентификаторы используются для получения данных с удаленного веб-сайта. Эти данные сохраняются в массив с именем 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 вместо трех новых столбцов. Кто что подскажет :)


person user3414694    schedule 25.03.2014    source источник


Ответы (1)


Вы захотите добавить новые столбцы в $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)
    );
}
person webbiedave    schedule 25.03.2014