用PHP创建CSV文件 [英] Create CSV File with PHP

查看:88
本文介绍了用PHP创建CSV文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想创建一个新的.csv文件(无需先通过 fopen ). 到目前为止,我已经尝试过:

I want to create a new .csv file (without opening the raw file first via 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 :')

我的问题是:

  1. 如何将数组2d更改为csv?

非常需要您的帮助:(非常感谢:)

Very need your help :( Thank you so much :")

推荐答案

使用 fopen w一起创建的文件将不存在:

Using fopen with w will create the file if does not exist:

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

如果您不喜欢 fputcsv fopen 您可以使用以下替代方法:

If you don't like fputcsv and fopen you can use this alternative:

$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.

这篇关于用PHP创建CSV文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆