简体   繁体   English

用 PHP 创建 CSV 文件

[英]Create CSV File with PHP

I want to create a new .csv file (without opening the raw file first via fopen ).我想创建一个新的 .csv 文件(无需先通过fopen原始文件)。 So far I have tried this:到目前为止,我已经尝试过这个:

$list[] = array
(
    "Name" => "John",
    "Gender" => "M",
    "Age" => "21"
);
$timestamp0 = date("Y-m-d H:i:sa", time());
$datetime = new DateTime($timestamp0);
$datetime->setTimezone(new DateTimeZone('Asia/Jakarta'));
$timestamp = $datetime->format("Y-m-d_H-i");

$filename = __DIR__ . "/file/" . $timestamp . ".csv";

$header = array("name", "gender", "age");
file_put_contents($filename, implode("\n", $list)); // error here bcs array given :')

My questions are:我的问题是:

  1. How can I change array 2d to csv?如何将数组 2d 更改为 csv?

Very need your help :( Thank you so much :")非常需要您的帮助:(非常感谢:")

Using fopen with w will create the file if does not exist:如果文件不存在,则使用fopenw将创建文件:

$list = [
    ["Name" => "John", "Gender" => "M"],
    ["Name" => "Doe", "Gender" => "M"],
    ["Name" => "Sara", "Gender" => "F"]
];

$fp = fopen($filename, 'w');
//Write the header
fputcsv($fp, array_keys($list[0]));
//Write fields
foreach ($list as $fields) {
    fputcsv($fp, $fields);
}
fclose($fp);

If you don't like fputcsv and fopen you can use this alternative:如果您不喜欢fputcsvfopen您可以使用以下替代方法:

$list = [
    ["Name" => "John", "Gender" => "M"],
    ["Name" => "Doe", "Gender" => "M"],
    ["Name" => "Sara", "Gender" => "F"]
];

$csvArray = ["header" => implode (",", array_keys($list[0]))] + array_map(function($item) {
    return implode (",", $item);
}, $list);

file_put_contents($filename, implode ("\n", $csvArray));

I hope this will help you.我希望这会帮助你。

You can use below code您可以使用以下代码

$list[]=array ("name","gender","age"); // push header here
$list[] = array("John","M","21"); // push record here

$timestamp0     = date("Y-m-d H:i:sa",time());
$datetime       = new DateTime($timestamp0);
$datetime->setTimezone(new DateTimeZone('Asia/Jakarta'));
$timestamp      = $datetime->format("Y-m-d_H-i");

$filename = __DIR__ . "/file/" . $timestamp . ".csv";

$fp = fopen($filename, 'w');
foreach ($list as $fields) {
    fputcsv($fp, $fields);
}
fclose($fp);

For more detail read php manual about CSV file.有关更多详细信息,请阅读有关 CSV 文件的 php 手册。 http://php.net/manual/en/function.fputcsv.php http://php.net/manual/en/function.fputcsv.php

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM