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

PHP将数组转为CSV:如何让Timestamp与问答同行?

PHP数组转CSV格式问题分析与解决

代码错误点

你的代码核心问题是把表头和数据拆成了独立的行,没有将Timestamp与问答内容合并到同一行,同时时间戳格式不符合需求:

  • 你将Timestamp单独存入$keyarray,问题列表存入$questionarray,然后分别作为两行写入CSV,导致首行只有Timestamp,问题单独占一行
  • 时间戳值单独存入$valuearray,答案列表存入$answerarray,同样分两行写入,导致时间戳和答案分开
  • 使用time()输出的是Unix时间戳(如1676484864),但你需要的是格式化后的可读日期时间(如12/3/21 14:05)

修正后的代码

<?php
$qna = [
    [
        "questionNo"=> 1,
        "question"=> "I am the life of the party.",
        "answer"=> 2
    ],
    [
        "questionNo"=> 2,
        "question"=> "I feel little concern for others.",
        "answer"=> 4
    ],
    [
        "questionNo"=> 3,
        "question"=> "I am always prepared.",
        "answer"=> 2
    ],
    [
        "questionNo"=> 4,
        "question"=> "I get stressed out easily.",
        "answer"=> 4
    ]
];

$csv = '/home/ankur/Desktop/iq_data.csv';
$fp = fopen($csv, 'w');

// 构建首行:Timestamp + 所有问题
$headerRow = ['Timestamp'];
// 构建数据行:格式化后的时间戳 + 所有答案
$dataRow = [date('m/d/y H:i')]; // 按期望格式生成时间

foreach ($qna as $item) {
    $headerRow[] = $item['question'];
    $dataRow[] = $item['answer'];
}

// 写入两行内容:首行表头,第二行数据
fputcsv($fp, $headerRow);
fputcsv($fp, $dataRow);

fclose($fp);
?>

修正说明

  1. 合并表头行:将Timestamp作为第一个元素,遍历数组把所有问题追加到同一个数组$headerRow中,确保首行是Timestamp+所有问题
  2. 合并数据行:用date('m/d/y H:i')生成符合需求的格式化时间戳,作为第一个元素,再把所有答案追加到$dataRow中,保证时间和答案在同一行
  3. 简化写入逻辑:只需要写入两行数据,去掉多余的数组拼接和循环写入步骤

内容的提问来源于stack exchange,提问作者Ankur Guha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 22:55:18