如何在不使用 csv 文件的情况下将 JSON 数据即时转换为 CSV 格式

我正在使用 PHP 并将 JSON 数据转换为 CSV 格式,然后读取相同的 CSV 文件以进行进一步处理。


下面是我将 JSON 数据转换为 CSV 格式的代码。


function LoadDataFromFile($file)

{


$json = file_get_contents($file);

$array = json_decode($json, true);

$f = fopen('out.csv', 'w');

$firstLineKeys = false;

$keys = array();

//first collect keys

foreach($array as $line){

    foreach($line as $key => $value){

        if(!in_array($key, $keys))

            $keys[] = $key;

    }

}

$keyString = implode(",", $keys);

fwrite($f, "$keyString\n");

foreach ($array as $line)

{

    $outputArray = array();

    foreach($keys as $key){

        if(array_key_exists($key, $line)){

            $outputArray[] = str_replace(',', '', $line[$key]);;

        } else {

            $outputArray[] = "";

        }

    }

    $outputString = implode(",", $outputArray);

    fwrite($f, "$outputString\n");

}

fclose($f);


}

正如我们所看到的,我正在将数据写入“out.csv”文件,稍后我正在读取相同的 CSV 文件并将相同文件的值/全部内容逐行分配给 $array 变量,如下所示.


$array = explode("\n", file_get_contents('out.csv'));

现在,我想直接将 csv 内容的值分配给 $array 变量,而不使用中间的“out.csv”文件。


想知道在将 JSON 数据转换为 CSV 格式时应该使用什么数据结构,以及“LoadDataFromFile”方法所需的可能代码更改?


炎炎设计
浏览 163回答 1
1回答

慕神8447489

如果您已经可以将 json 转换为 csv,那么只需将分配给字符串变量的输出字符串附加在一起,而不是将其写入文件。或者我误解了你想要什么?代替:fwrite($f, "$outputString\n");你可以把:$csv .= $outputString;并完成它:$array = explode("\n", $csv);
打开App,查看更多内容
随时随地看视频慕课网APP