当前位置: 首页 > 面试题库 >

CSV至Json,标题行为键

赵志
2023-03-14
问题内容

我想将CSV转换为Json,将标题行用作键,并将每一行用作对象。我该怎么做呢?

---------------------------------- CSV --------------- ------------------

 InvKey,DocNum,CardCode
 11704,1611704,BENV1072
 11703,1611703,BENV1073

--------------------------------- PHP ---------------- -------------------

  if (($handle = fopen('upload/BEN-new.csv'. '', "r")) !== FALSE) {
       while (($row_array = fgetcsv($handle, 1024, ","))) {
            while ($val != '') {
                foreach ($row_array as $key => $val) {
                        $row_array[] = $val;
                        }
                }
            $complete[] = $row_array;   
            }
            fclose($handle);
        }
        echo json_encode($complete);

问题答案:

只需分别阅读第一行并将其合并到每一行:

if (($handle = fopen('upload/BEN-new.csv', 'r')) === false) {
    die('Error opening file');
}

$headers = fgetcsv($handle, 1024, ',');
$complete = array();

while ($row = fgetcsv($handle, 1024, ',')) {
    $complete[] = array_combine($headers, $row);
}

fclose($handle);

echo json_encode($complete);


 类似资料:
  • 问题内容: 我们使用的是SQL Server 2008,我试图找出是否有一种方法可以让存储过程在1个CSV字段中返回我的结果 例如: 会回来 我希望在以下1个字段中返回:Jeep,Honda,Mitsubishi,Ford 我知道我们可以使用程序集,临时表或服务器端代码来做到这一点,但宁愿不要走那条路。您是否可以建议任何技巧/窍门以获得所需的结果? 问题答案: 试试这个: 编辑 与上述相同的答案,

  • null 让我知道,如果你知道一个更优雅的方式做到这一点。

  • 问题内容: 我有一个CSV,第一行包含字段名称。示例数据是… 我需要将数据格式化为键-值对数组,其中键名是列标题。我想第1行会是这样的: 第2行 …以及第3行… 除了静态以外,我不确定如何执行此操作-问题是带有关联数据的列可能从一个文件更改为下一个文件…重新排列,删除或添加了列。 非常感谢您的想法。 问题答案:

  • 问题内容: 我有一个结构如下的JSON数据(这里可能存在一些错误,我使用的数据很好): 我想将其转换为csv,以便所选的属性名称成为csv标头,并且其值(仅深度1)成为数据。例如 我试过使用数百种 但没有一个成功。我得到的只是带有对象名称/类型的csv数据,我不知道如何使它仅使用json数据中每个对象的选定属性。 问题答案: 简而言之,您需要执行以下操作: 第一个问题是要传递不需要的行 。使用该开

  • 问题内容: 有谁知道是否有可以让我将XLS最好转换为JSON的应用程序? 我还将为CSV转换程序做准备,因为如果周围什么都没有的话,我可能最终不得不写自己。 问题答案: 这对我来说效果很好,不需要上传文件: https://github.com/cparker15/csv-to- json?files=1

  • 问题内容: 这是我的代码,非常简单的东西… 声明一些字段名称,阅读器使用CSV读取文件,并使用字段名称将文件转储为JSON格式。这是问题所在… CSV文件中的每个记录都在不同的行上。我希望JSON输出采用相同的方式。问题在于,将其全部倾倒在一条长长的巨线上。 我试过使用类似的代码,然后在该代码下面运行我的代码,该代码循环遍历每一行,但它在一行上执行整个文件,然后在另一行上遍历整个文件…一直持续到行