Как преобразовать массив PHP ассоциативного массива в строку CSV, используя библиотеку третьего производителя? - PullRequest
0 голосов
/ 05 февраля 2019

Я должен преобразовать ассоциативный массив php в CSV, например:

[
    ["a"=>1, "b"=>2, "c"=>3],
    ["a"=>5, "b"=>6, "c"=>6],
    ["a"=>7, "b"=>8, "c"=>9, "d"=>10]
]

должен вывести строку типа

a;b;c;d
1;2;3;
4;5;6;
7;8;9;10

Я уже реализую эту логику, используя только foreach и implodes.Однако у CSV есть некоторые особенности, такие как знание, когда символы scape и когда нужно заключать в кавычки ячейки.

Я много использовал https://www.papaparse.com/ (javascript) для внешнего интерфейса.

Есть ли пакет Composer, который может выполнить эту работу?

PS.Мне нужен CVS как строка, чтобы не сохранять в файл.

1 Ответ

0 голосов
/ 05 февраля 2019

Вы можете использовать fputcsv, чтобы получить правильно отформатированный CSV, сохранить в памяти и затем сохранить его в переменной:

$fh = fopen('php://memory', 'r+');

foreach($array as $row) {
    fputcsv($fh, $row); // add other args as needed
}
$csv = stream_get_contents($fh, -1, 0);

//or

rewind($fh);
$csv = stream_get_contents($fh);

Вы также можете использовать php://temp, который будет использовать память до предела.а затем записать во временный файл или вы можете создать свой собственный временный файл с помощью tmpfile.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...