Php сниппет для сохранения массива в CSV

12.03.2024

Довольно простая задача, сохранить данные из php в csv, в интерне море примеров, но все они используют как разделитель ";". Мой XL упорно не понимает такого, и ждет "," как разделитель.

Оставлю для себя небольшую памятку.

Файл скрипта должен быть в UTF.

 
<?php

$aProducts = [
    [
        'id' => '150',
        'name' => 'Test #1',
        'category' => 'Категория 1',
        'price' => '10000',
    ],
    [
        'id' => '151',
        'name' => 'Тест №1',
        'category' => 'Категория 1',
        'price' => '20000',
    ],
    [
        'id' => '152',
        'name' => 'Тест №2',
        'category' => 'Категория 1',
        'price' => '30000',
    ],
];


function array2csv($sFileName, $aIn, $sSeparator = ',') {
    $fh = fopen($sFileName, 'w');

    fputs($fh, chr(0xEF) . chr(0xBB) . chr(0xBF));

    foreach($aIn as $val) {

        fputcsv($fh, $val, $sSeparator);

    }

    fclose($fh);
}

array2csv(__DIR__ . '/test.csv', $aProducts);


Категории: PHP, Script / Tool, -Памятка-
Яндекс.Метрика