CSV到Json,标题行为键

MG1*_*MG1 3 php json

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

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

 InvKey,DocNum,CardCode
 11704,1611704,BENV1072
 11703,1611703,BENV1073
Run Code Online (Sandbox Code Playgroud)

--------------------------------- 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);
Run Code Online (Sandbox Code Playgroud)

dec*_*eze 14

只需单独阅读第一行并将其合并到每一行:

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);
Run Code Online (Sandbox Code Playgroud)

  • 你怎么不明白呢?它打开一个文件句柄,*将第一行*读入`$ headers`,然后读取剩余的行.它将每一行与`$ headers`组合在一起.参见[array_combine](http://php.net/array_combine). (4认同)