PHP:用CSV写

时间:2017-01-02 06:10:31

标签: php csv

$array = array(
    array("Id" => 0001 , "Name" => "Punit"),
    array("Id" => 0002 , "Name" => "Pratik"),
    array("Id" => 0003 , "Name" => "Milan"),
    array("Id" => 0004 , "Name" => "Pritesh"),
    array("Id" => 0005 , "Name" => "Kunjan"),
    array("Id" => 0006 , "Name" => "Hemant"),
    array("Id" => 0007 , "Name" => "Ravi"),
    array("Id" => 0008 , "Name" => "Mitesh"),
    array("Id" => 0009 , "Name" => "Ankur")
);

$contents = "Id,Name\n";
foreach ($array as $id => $call) {    
    $contents.=str_replace(",", " ", $call['Id']) . ",";
    $contents.=str_replace(",", " ", $call['Name']) . "\n";;
}


header('Content-type:application/csv');
//header to make force download the file
header('Content-Disposition: attachment;filename="ConferenceReport-NBCU' . date('d-m-Yh:i:s') . '.csv"');
print $contents;

以上是我生成CSV文件的代码, 正如您所看到的,在数组内的键Id中给出了数字。

问题是,当我尝试在CSV文件中编写密钥$call['Id']时,它就像这样

Id  Name
1   Punit
2   Pratik
3   Milan
4   Pritesh
5   Kunjan
6   Hemant
7   Ravi

0001 , 0002是来自数据库的数字

我想在写入CSV文件时保持原样。

我尝试(string)$call['Id']"".$call['Id'].""但没有任何作用。

1 个答案:

答案 0 :(得分:0)

以0开头的数字0001,0002 ...基本上是八进制数字在php中,八进制数字表示[0-7] +所以不能有任何有效数字,如0008 0009和编译器将抛出编译错误。如果您还想要尾随零,建议的解决方案是将这些数字存储为数据库中的字符串。