如何用PHP转置CSV文件?求修改现有代码实现目标格式
修改PHP代码生成纵向格式的CSV
你的需求是把原来横向排列的表头和值,改成每行显示一个表头对应一个值的纵向格式。原代码的问题在于把所有表头和值分别合并成两个数组,一次性写入两行,而我们需要逐行写入每组表头和值。
以下是修正后的代码:
<?php $data2 = [ ["number of drinks:" => "1"], ["number of snacks:" => "2"], ["number of cats" => "3"], ["numbers of dogs:" => "4"] ]; $fh = fopen('file.csv', 'w'); // 遍历每组数据,逐行写入CSV foreach ($data2 as $form_section) { foreach ($form_section as $heading => $value) { // 把表头和值组成一个数组,作为CSV的一行 fputcsv($fh, [$heading, trim($value)]); } } fclose($fh); ?>
关键修改说明:
- 修正了原代码中
$data2未闭合的语法错误,以及fputcsv参数多余的逗号问题 - 移除了原代码中合并
headers和values数组的逻辑,改为直接遍历每组数据,将单个表头和值组成数组写入CSV - 使用
trim($value)去除值里多余的空格(比如原数据中"2 "的空格),保证格式整洁
这样生成的CSV在Excel/Google Docs中打开后,会呈现每行两列的纵向格式,符合你的需求。
内容的提问来源于stack exchange,提问作者YaBoyCallum
相关产品推荐
相关产品推荐

