PHP

PHP массив в файл CSV

Пример как преобразовать массив в CSV файл и сохранить его диске или отдать на скачивание.

Имеем массив $prods:

$prods = array(
    array(
        'id' => '697',
        'name' => 'Динамический ортез-стоподержатель',
        'category' => 'Ортезы',
        'price' => '35990 RUB',
    ),    
    array(
        'id' => '698',
        'name' => 'Бандаж на коленный сустав',
        'category' => 'Ортезы',
        'price' => '3610 RUB',
    ),    
    array(
        'id' => '699',
        'name' => 'Бандаж на плечевой сустав',
        'category' => 'Ортезы',
        'price' => '3700 RUB',
    ),
);

Также массив можно заполнить данными из БД:

// Подключение к БД.
$dbh = new PDO('mysql:dbname=НАЗВАНИЕ_БД;host=localhost', 'ЛОГИН', 'ПАРОЛЬ');

$sth = $dbh->prepare("SELECT * FROM `prods`");
$sth->execute();
$array = $sth->fetch(PDO::FETCH_ASSOC);

$prods = array();
foreach($array as $row) { 
    $prods[] = array(
        'id'       => $row['id'],
        'name'     => $row['name'],
        'category' => $row['category'],
        'price'    => $row['price'],
    );
} 

Преобразуем массив в CSV с помощью функции fputcsv, в качестве разделителя используется ;.

Отдача файла на скачивание

header("Content-type: text/csv"); 
header("Content-Disposition: attachment; filename=file.csv"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 

$buffer = fopen('php://output', 'w'); 
fputs($buffer, chr(0xEF) . chr(0xBB) . chr(0xBF));
foreach($prods as $val) { 
    fputcsv($buffer, $val, ';'); 
} 
fclose($buffer); 
exit();

Сохранение файла на сервере

$buffer = fopen(__DIR__ . '/file.csv', 'w'); 
fputs($buffer, chr(0xEF) . chr(0xBB) . chr(0xBF));
foreach($prods as $val) { 
    fputcsv($buffer, $val, ';'); 
} 
fclose($buffer); 
exit();

Строка fputs($buffer, chr(0xEF) . chr(0xBB) . chr(0xBF)); добавляет в начало файла метку BOM, благодаря этому файл откроется в Excel с нормальной кодировкой.

Результат

Содержание файла file.csv:

697;"Динамический ортез-стоподержатель";Ортезы;"35990 RUB"
698;"Бандаж на коленный сустав";Ортезы;"3610 RUB"
699;"Бандаж на плечевой сустав";Ортезы;"3700 RUB"

Открытый в Excel:

PHP масив в файл CSV

14 июня 2019
В последнее время письма отправляемые с хостингов через функции mail() и mb_send_mail() часто попадают в спам или...
cURL PHP – это библиотека предназначенная для получения и передачи данных через такие протоколы, как HTTP, FTP, HTTPS....
В статье приведены основные примеры работы с расширением PHP PDO. Такие как подключение к БД, получение, изменение и...
Библиотека GD дает возможность работать с изображениями в PHP. Далее представлены примеры как изменить размер, вырезать...