You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何生成带正确表头的CSV:API JSON结果转Excel可导入格式

解决KeywordTool.io API导出CSV表头横向排列的问题

嘿,我看你遇到了CSV导出格式的问题——原来的代码把每个关键词的字段都拆成了纵向的行,完全不是我们想要的横向表头+每行对应一个关键词的结构。我来帮你调整代码解决这个问题。

问题根源分析

你原来的三层循环是把每个关键词的单个键值对单独写成一行(比如cat,string,cat),这就导致所有数据都呈纵向排列,完全不符合Excel导入的常规格式。我们需要先提取统一的表头,再把每个关键词的所有字段值整理成一行,和表头一一对应。

修改后的完整代码

<?php
$apikey = 'XXXXXXXXXXXX';
$array = explode("\n", file_get_contents('kw1.txt'));
$params = [
    'apikey' => $apikey,
    'keyword' => $array,
    'metrics_location' => '2840',
    'metrics_language' => 'en',
    'metrics_network' => 'googlesearchnetwork',
    'metrics_currency' => 'USD',
    'output' => 'json',
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.keywordtool.io/v2/search/volume/google');
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($params));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$output = curl_exec($ch);
$response = json_decode($output, TRUE);

// 简单的API返回异常检查
if (empty($response) || !is_array($response)) {
    die("API返回数据异常,请检查请求参数或API密钥是否正确");
}

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

// 第一步:提取并写入表头
// 从第一个关键词的字段中获取所有键,把默认的'string'替换为更直观的'keyword'
$firstKeywordGroup = reset($response);
if (!empty($firstKeywordGroup)) {
    $firstEntry = reset($firstKeywordGroup);
    $headers = array_keys($firstEntry);
    // 替换表头字段名,让CSV更易读
    $stringIndex = array_search('string', $headers);
    if ($stringIndex !== false) {
        $headers[$stringIndex] = 'keyword';
    }
    // 写入表头到CSV
    fputcsv($fp, $headers);
}

// 第二步:遍历每个关键词数据,整理成一行写入CSV
foreach ($response as $keywordGroup) {
    foreach ($keywordGroup as $entry) {
        $row = [];
        // 按照表头顺序匹配对应的值
        foreach ($headers as $header) {
            // 处理keyword字段对应的原始string值
            $row[] = $header === 'keyword' ? $entry['string'] : ($entry[$header] ?? '');
        }
        fputcsv($fp, $row);
    }
}

fclose($fp);
echo "CSV文件已成功生成:{$csvFileName}";
?>

关键修改说明

  1. 表头提取:通过reset()拿到第一个关键词的数据集,用array_keys()获取所有字段名,把默认的string替换成keyword,让表头更符合业务逻辑。
  2. 行数据整理:遍历每个关键词的条目时,严格按照表头的顺序提取对应的值,确保每行内容和表头一一对应,不会出现错位。
  3. 异常处理:增加了API返回空数据的检查,避免后续代码报错。

修改后生成的CSV格式

现在生成的CSV会是你期望的结构:

keyword,volume,m1,m1_month,m1_year,...
cat,6120000,7480000,5,2019,...
dog,7480000,...,...,...,...

内容的提问来源于stack exchange,提问作者Gray Ridley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:43:39