Я пытаюсь превратить свой массив в PHP в CSV для загрузки.
В настоящее время массив выглядит примерно так
Array[0] = "Name,age,ID"
Array[1] = "Alex,26,1"
Array[2] = "Ryan,12,2"
Array[3] = "Steph,56,7"
так далее
Я не был уверен, как сделать эту загрузку в формате CSV, где каждая позиция в массиве является отдельной строкой, очевидно, в формате CSV.
Я установил следующие заголовки:
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=file.csv");
затем я попытался повторить каждый элемент массива, надеясь, что это сработает. следующее:
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=file.csv");
foreach ($lines as &$line) {
echo $line;
}
Где $lines был моим массивом.
Однако в csv все было одной строкой. Есть ли способ повернуть этот массив для правильной печати в CSV?
echo "$line\n";echo не добавляет автоматически новые строки в конец вашего контента. Вы должны сделать это явно.






Вы должны добавить новую строку
echo $line . "\n";
Даже лучше
echo $line . PHP_EOL; //constant for correct line-ending depending on OS.
Используйте PHP_EOL для кроссплатформенной новой строки: echo $line, PHP_EOL;
Боже мой, я тупой. Думаю, после программирования на PHP почти 2 года я бы это уловил. Я приму ответ, когда он мне позволит.
Одно из решений - функция fputcsv.
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=file.csv");
$output = fopen('php://output', 'w');
foreach ($lines as $line) {
$row = explode(',', $line);
fputcsv($output, $row);
}
fclose($output);
@PatrickQ готово, это просто базовое эхо, я не думал, что это нужно.