首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将多个JSON API页合并到单个CSV文件中

将多个JSON API页合并到单个CSV文件中
EN

Stack Overflow用户
提问于 2018-06-10 02:00:28
回答 1查看 231关注 0票数 0

尝试获取将JSON返回到一个CSV文件的API的多个页面。目前,将它将循环通过的最大页数设置为120就足够了。

这是第一个没有任何循环的请求,它创建一个工作的CSV文件(output.txt)。

代码语言:javascript
复制
<?php

$pageNo = "1";      

$jsonString = file_get_contents("http://api.domain.com/apikey/? 
name1=value1&name2=value2&pageNo=$pageNo");
$jsonDecoded = json_decode($jsonString, true);
$csvHeader=array();
$csvData=array();
$csvFileName = 'output.txt';
$fp = fopen($csvFileName, 'w');
$counter=0;
foreach($jsonDecoded["result"]["items"] as $key => $value)
{
jsontocsv($value);
if($counter==0)
{
    fputcsv($fp, $csvHeader, ';');
    $counter++;
}
fputcsv($fp, $csvData, ';');
$csvData=array();
}
fclose($fp);

function jsontocsv($data)
{
global $csvData,$csvHeader;
foreach($data as $key => $value)
{
    if(!is_array($value))
    {
        $csvData[]=$value;
        $csvHeader[]=$key;
    }
    else 
    {
        jsontocsv($value);
    }
}
}

?>

我猜这应该在一个while循环中,在最后使用类似于++$pageNo的东西来更新值。但是,以前的所有尝试都会导致每次都覆盖文件,并且只将最后一页写入文件。如何在每次循环时向CSV中添加内容?不过,理想情况下,每次运行整个脚本(每天一次)时,整个CSV文件都将被替换为更新后的值。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-10 02:27:47

您正在以写入模式打开文件,这会将指针放置到文件的开头(fopen($csvFileName, 'w')),这就是它被覆盖的原因。尝试使用追加模式,它应该将指针放到末尾。此外,如果要在文件不存在的情况下创建该文件,请使用加号,如下所示:fopen($csvFileName, 'a+')

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50777103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档