PHP fputcsv производит пустые файлы - PullRequest
2 голосов
/ 08 февраля 2012

Я начинаю работу над проектом, который требует, чтобы я взял несколько массивов и поместил их в CSV-файл. Однако, хотя он генерирует файл, он, как правило, полностью пустой (размер файла 0 б). Иногда, если я что-то пропускаю, он помещает сообщение об ошибке в файл, или пару раз помещает массив в файл, как если бы я делал print_r ($ array).

В настоящее время у меня есть это:

    <?php

// output headers
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=file.csv');


$list = array (
    array('aaa', 'bbb', 'ccc', 'dddd'),
    array('123', '456', '789'),
    array('"aaa"', '"bbb"')
);

$fp = fopen('file.csv', 'w');


// output data
foreach ($list as $fields) {
    fputcsv($fp, $fields);
}

fclose($fp);
?>

Используемые массивы в конечном итоге будут сгенерированы, но я новичок в создании файлов, поэтому я хотел сделать это в первую очередь.

Я также пробовал несколько вариантов с одинаковыми результатами. Пока что я могу думать только о том, что я использую XAMPP, и что есть некоторая проблема с функцией fputcsv, но я не нашел никого другого с этой проблемой. В моем коде есть ошибка, или я должен искать свою проблему в другом месте?

Ответы [ 2 ]

3 голосов
/ 08 февраля 2012

fputcsv предназначен для записи данных CSV в файл .
Если вы хотите записать его в STDOUT (где заканчиваются данные из эха), вам придется либо прочитать его обратно с диска, или вместо записи в «file.csv», напишите php: //stdout.

В любом случае, не забудьте fclose () в конце.

1 голос
/ 08 февраля 2012

Попробуйте пример из руководства :

$list = array (
    array('aaa', 'bbb', 'ccc', 'dddd'),
    array('123', '456', '789'),
    array('"aaa"', '"bbb"')
);

$fp = fopen('file.csv', 'w');

foreach ($list as $fields) {
    fputcsv($fp, $fields);
}

fclose($fp);
...