У меня очень простой массив, который я хочу экспортировать в файл CSV, который я сделал с помощью этого метода. Как создать и загрузить файл csv из php-скрипта?
Но я хочу, чтобы мой собственный заголовок находился в верхней части файла, который также является массивом, созданным мной и похожим на this-
$header = array(
'order_id' => 'order_id',
'firstname' => 'firstname',
'lastname' => 'lastname',
'email' => 'email',
'telephone' => 'telephone',
'fax' => 'fax',
'product_id' => 'product_id',
'name' => 'name',
'model' => 'model',
'quantity' => 'quantity',
'price' => 'price',
'currency_value' => 'total',
'order_status' => 'order_status'
);
мой исходный массив экспорта -
Array
(
[0] => Array
(
[order_id] => 195
[firstname] => satyendra
[lastname] => singh
[email] => [email protected]
[telephone] => 9818077908
[fax] =>
[product_id] => 7086
[name] => Bachini Casual Shoes 1511-Navy Blue
[model] => 1511-Navy Blue
[quantity] => 1
[price] => 499.00
[currency_value] => 499.00
[order_status] =>
)
[1] => Array
(
[order_id] => 196
[firstname] => satyendra
[lastname] => singh
[email] => [email protected]
[telephone] => 9818077908
[fax] =>
[product_id] => 7086
[name] => Bachini Casual Shoes 1511-Navy Blue
[model] => 1511-Navy Blue
[quantity] => 1
[price] => 499.00
[currency_value] => 499.00
[order_status] =>
)
)
экспорт работает нормально. Я просто хочу добавить этот заголовок в начало моего исходного массива, чтобы при экспорте я получил первую строку массива в качестве заголовка в моем файле csv. может ли какой-нибудь трюк добиться определенного результата
Вы можете попробовать ниже кода.
Предполагая, что вы используете упомянутый вами код - Как создать и загрузить файл csv из php-скрипта? , пожалуйста, передайте свой массив $ header как четвертый параметр для функции array_to_csv_download.
Затем, как только перед массивом экспорта, массив заголовков записывается в файл csv.
function array_to_csv_download($array, $filename = "export.csv", $delimiter=";",$header) {
// open raw memory as file so no temp files needed, you might run out of memory though
$f = fopen('php://memory', 'w');
fputcsv($f, $header, $delimiter); // write $header array first to top of csv file
// loop over the input array
foreach ($array as $line) {
// generate csv lines from the inner arrays
fputcsv($f, $line, $delimiter);
}
// reset the file pointer to the start of the file
fseek($f, 0);
// tell the browser it going to be a csv file
header('Content-Type: application/csv');
// tell the browser we want to save it instead of displaying it
header('Content-Disposition: attachment; filename="'.$filename.'";');
// make php send the generated csv lines to the browser
fpassthru($f);
}