【问题标题】:Write json object into CSV file using php使用 php 将 json 对象写入 CSV 文件
【发布时间】:2022-01-15 10:49:39
【问题描述】:

我正在尝试将 json 对象写入 CSV 文件,但它不起作用,文件为空。

有什么建议吗?

在我的 PHP 代码下面

//json to csv
$jsondata = '{"regNo":"92-212-98","tradName":"FEVADOL EXTRA TAB.","genericName":"PARACETAMOL, CAFFEINE","price":"5.300","strngth":"500, 65 mg","exD":"21/07","PRODREGSTATUS":"PRODNOTFOUND","authstatus":"1","marketingstatus":"1","productstatus":null}';
$json = json_decode($jsondata);

$fp = fopen('file.csv', 'w');

// if($fp == false){
// echo 'false open';
// }else{
//  echo 'true open';
// }

foreach ($json as $fields) {
    fputcsv($fp, $fields);
}

fclose($fp);

【问题讨论】:

  • $jsondata 在这里是一个字符串。您可能需要先通过json_decode() 运行它以获取可以迭代的数组或对象。
  • 此外,您可能需要检查$fp 是否等于false。如果是这样,这意味着 PHP 无法打开文件进行写入。这应该会触发警告,但根据您的设置,这些可能会被隐藏。
  • @rickdenhaan 我更新了我的问题,但它已成功打开文件。
  • @rickdenhaan 我更新了我的问题,但即使添加了 json_decode() 也没有运气,文件是空的。
  • 您需要在本地开发框中启用error reporting,这样您才能看到“PHP Fatal error: Uncaught TypeError: fputcsv(): Argument #2 ($fields) must be of type array, string给定”。几乎每次我给出这条建议时都会被忽略,但这是唯一明智的发展方式。

标签: php json csv


【解决方案1】:

fputcsv 函数的第二个参数必须是显示一行单元格的数组。更多信息:https://www.php.net/manual/en/function.fputcsv.php

修改for部分代码即可解决问题:

foreach ($json as $index => $field) {
    fputcsv($fp, [$index, $field]);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-06
    • 1970-01-01
    • 2017-06-29
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多