1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/lkn2015-phpcookbook_3rd_translate

Клонировать/Скачать
chapter1_strings_1.11_生成逗号分隔值.md 3.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 02.12.2024 11:36 0f1959f

Глава 1. Строки

1.11 Генерация данных с разделителями-запятыми

Проблема

Вы хотите отформатировать данные и создать данные в формате CSV (значения, разделённые запятыми), которые можно импортировать в электронную таблицу (например, Excel) или базу данных.

Решение

Используйте функцию fputcsv() для создания форматированных данных CSV из массива. Пример [1-27] записывает данные из $sales в файл.

[Пример 1-27]:

$sales = array( array('Northeast','2005-01-01','2005-02-01',12.54),
                array('Northwest','2005-01-01','2005-02-01',546.33),
                array('Southeast','2005-01-01','2005-02-01',93.26),
                array('Southwest','2005-01-01','2005-02-01',945.21),
                array('All Regions','--','--',1597.34) );
$filename = './sales.csv';
$fh = fopen($filename,'w') or die("Can't open $filename");
foreach ($sales as $sales_line) {
    if (fputcsv($fh, $sales_line) === false) {
        die("Can't write CSV line");
    }
}
fclose($fh) or die("Can't close $filename");

Обсуждение

  • Если вы хотите вывести форматированные данные CSV вместо записи их в файл, вы можете использовать специальный выходной поток PHP php://output для работы:

    [Пример 1-28]:

    $sales = array( array('Northeast','2005-01-01','2005-02-01',12.54),
                array('Northwest','2005-01-01','2005-02-01',546.33),
                array('Southeast','2005-01-01','2005-02-01',93.26),
                array('Southwest','2005-01-01','2005-02-01',945.21),
                array('All Regions','--','--',1597.34) );
    $fh = fopen('php://output','w');
    foreach ($sales as $sales_line) {
        if (fputcsv($fh, $sales_line) === false) {
            die("Can't write CSV line");
        }
    }
    fclose($fh);

- Если вы хотите поместить форматированные данные CSV в строку, а не выводить их или записывать в файл, вы можете объединить метод из примера [1-28] с выходным буфером:

  [Пример 1-29]:

$sales = array( array('Northeast','2005-01-01','2005-02-01',12.54), array('Northwest','2005-01-01','2005-02-01',546.33), array('Southeast','2005-01-01','2005-02-01',93.26), array('Southwest','2005-01-01','2005-02-01',945.21), array('All Regions','--','--',1597.34) ); ob_start(); $fh = fopen('php://output','w') or die("Can't open php://output"); foreach ($sales as $sales_line) { if (fputcsv($fh, $sales_line) === false) { die("Can't write CSV line"); } } fclose($fh) or die("Can't close php://output"); $output = ob_get_contents(); ob_end_clean();


#### См. также

* [Справочник по функции `fputcsv`](http://php.net/manual/zh/function.fputcsv.php).
* Раздел 8.13 содержит более подробное введение в концепцию буфера вывода.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/lkn2015-phpcookbook_3rd_translate.git
git@api.gitlife.ru:oschina-mirror/lkn2015-phpcookbook_3rd_translate.git
oschina-mirror
lkn2015-phpcookbook_3rd_translate
lkn2015-phpcookbook_3rd_translate
master