使用PHP创建CSV文件

使用PHP创建CSV文件,php,csv,export-to-csv,Php,Csv,Export To Csv,我想创建一个新的.csv文件,而不首先通过打开原始文件。 到目前为止,我已经尝试过: $list[] = array ( "Name" => "John", "Gender" => "M", "Age" => "21" ); $timestamp0 = date("Y-m-d H:i:sa", time()); $d

我想创建一个新的.csv文件,而不首先通过打开原始文件。 到目前为止,我已经尝试过:

$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 :')
我的问题是:

如何将阵列2d更改为csv? 非常需要您的帮助:非常感谢:

如果不存在,则使用w将创建文件:

$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);
如果您不喜欢,可以使用以下替代方案:

$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));
我希望这将对您有所帮助。

使用with w将创建不存在的文件:

$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);
如果您不喜欢,可以使用以下替代方案:

$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));
我希望这将对您有所帮助。

您可以使用以下代码

$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);
有关更多详细信息,请阅读关于CSV文件的php手册

您可以使用以下代码

$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);

有关更多详细信息,请阅读关于CSV文件的php手册

对不起,忘了更改,我正在使用多维数组,我该怎么办?:'只要用你的数组更新问题,我会帮助你找到更好的选择@ismail RBOUH,-1因为它不是创建CSV文件的完美方式@HareshVidja我还在等你取消否决票!因为OP请求不使用open和fputcsv。然而,我已经为未来的用户更新了答案;非常感谢。你们第一次并没有给出完美的解决方案,所以我放弃了投票。。。你必须首先考虑给出完美的解决方案。。。谢谢:我很抱歉忘记更改,我使用多维数组,我该怎么办?:'只要用你的数组更新问题,我会帮助你找到更好的选择@ismail RBOUH,-1因为它不是创建CSV文件的完美方式@HareshVidja我还在等你取消否决票!因为OP请求不使用open和fputcsv。然而,我已经为未来的用户更新了答案;非常感谢。你们第一次并没有给出完美的解决方案,所以我放弃了投票。。。你必须首先考虑给出完美的解决方案。。。谢谢: