在 PHP 中 JSON 数组导出为 CSV
Posted
技术标签:
【中文标题】在 PHP 中 JSON 数组导出为 CSV【英文标题】:JSON Array Export to CSV in PHP 【发布时间】:2016-03-21 18:41:52 【问题描述】:我正在尝试导出为 csv,即具有以下格式的 JSON:
$json_file2
"errors":
"code":0,
"text":""
,
"results":
"resultado":
[
"referencia":"00000",
"cantidad":"24",
"cantidad_proveedor":null,
"delivery_time":"delivery time 2 days"
,
"referencia":"00001",
"cantidad":"24",
"cantidad_proveedor":"48",
"delivery_time":""
,
"referencia":"00098_1",
"cantidad":"96",
"cantidad_proveedor":null,
"delivery_time":"delivery time 4 days"
]
我需要导出到 csv
"referencia":"00000",
"cantidad":"24",
"cantidad_proveedor":null,
"delivery_time":"delivery time 2 days"
采用这种格式:
"00000","24",null,"delivery time 2 days"
"00001","24","48",""
"00098_1","96",null,"delivery time 4 days"
......
我试着按照我正在学习的方式去做
$decoded = json_decode($json_file2);
$comments = $decoded->data[0]->results->resultado;
$fp = fopen('stock2.csv', 'w');
foreach($comments as $comment)
fputcsv($fp,$comment);
但它总是给我错误foreach: 警告:为 foreach() 提供的参数无效
我哪里做错了? 坦克
【问题讨论】:
【参考方案1】:您必须将一个数组传递给 fputcsv。使用此代码:
fputcsv($fp,(array)$comment);
【讨论】:
警告:为 foreach() 提供的参数无效【参考方案2】:$json_file2 中没有数据数组字段。 您必须改用 $decoded->results->resultado。并将 $comment 转换为 Brian 所说的 array。
最终代码如下所示:
$decoded = json_decode($json_file2);
$comments = $decoded->results->resultado;
$fp = fopen('stock2.csv', 'w');
foreach($comments as $comment)
fputcsv($fp, (array)$comment);
通过该更改,您将获得类似的结果:
00000,24,,"delivery time 2 days"
00001,24,48,
00098_1,96,,"delivery time 4 days"
也许你应该编写你自己的 fputcsv 函数来获得你想要的结果,用 null 和带引号的数字。
【讨论】:
完美的宇进!谢谢!我不能给你一个积极的,没有足够的声誉:( @Juanjo 您可以通过单击该项目左侧的复选标记来接受答案。这会给用户 +15 声望,我相信会给你 +2。以上是关于在 PHP 中 JSON 数组导出为 CSV的主要内容,如果未能解决你的问题,请参考以下文章