【问题标题】:format fputcsv with header row and each column etc currently all inserting to first column使用标题行和每一列等格式化 fputcsv 当前都插入到第一列
【发布时间】:2014-05-08 06:11:29
【问题描述】:

我很难弄清楚如何正确格式化这些 fputcsv 行。

这是我用来将查询写入 csv 文件的代码。

$handle = fopen( $dir .'/export.csv', 'w');
  $headers = 'Category Name, ID';
  fwrite($handle,$headers);

foreach( $catresults as $catresult ) {
  $csvcatname[0] = $catresult->name;
  $csvcatimage[1] = $catresult->term_id;
  fputcsv($handle, $csvcatname);
  fputcsv($handle, $csvcatimage); 
}

fclose($handle);
}

这就是它写入 csv 文件的方式。类别名称应在类别名称列中,ID 应在 ID 中。如果您看一下,您会看到第一个类别名称与标题名称一起插入到第二列标题行中......

Category Name  |  IDShoes
66  
Pants   
65  
Lotions 
64  
findme  
69  
find me 
70  
with space  
71  
Find Second 
72  

更新

感谢 Barmar,它现在插入了两列。但是第一个数据行仍然插入到我的标题行中。我可以跳过 1 行吗?这就是它的出现方式...

Category Name | IDShoes | 66

【问题讨论】:

    标签: php csv export-to-csv fputcsv


    【解决方案1】:

    每次调用fputcsv 都会在文件中写入另一行。如果您希望该行有两列,则它必须是一个包含两个元素的数组。您正在创建两个数组,每个数组都有一个元素,并分别编写它们。

    foreach( $catresults as $catresult ) {
        $row = array($catresult->name, $catresult->term_id);
        fputcsv($handle, $row);
    }
    

    【讨论】:

    • 太棒了,谢谢,但现在第一个数据行仍然显示在标题行上。我可以跳过标题行吗?
    • 为什么$catresults 包含一个头信息?你可以做unset($catresults[0])
    • 我不想使用 db 列名,我想使用我自己的列名,以便查看 csv 文件的人确切知道它是什么......这就是我使用 $ headers = '类别名称,ID'; fwrite($handle,$headers);
    • 我不确定你在说什么。为什么 DB 列名称会在 $catresults 中?
    • 它不会也不会......我从来没有说过它会。您问“为什么 $catresults 包含标头信息?”不太清楚你在问什么......
    猜你喜欢
    • 2013-03-22
    • 2021-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-09
    • 2013-08-11
    相关资源
    最近更新 更多