【问题标题】:csv file is not downloading within for loopcsv 文件未在 for 循环中下载
【发布时间】:2017-06-29 12:12:50
【问题描述】:

比较两个多维数组并通过匹配值得到结果。如何为这些各自的值创建和下载 csv 文件。我在下面尝试过这段代码

$mycsvfile_result = array();
foreach ($mycsvfile as $arr1)
{
   foreach ($mycsvfile_log as $arr2)
   {  
      if($arr2[2] == $arr1[0])
      {
         $mycsvfile_result[] = array($arr2[2], $arr2[7]);
      } 
   }                    
}

为 fputcsv 尝试了代码 1

header('Content-type: application/csv');
header('Content-Disposition: attachment; filename="demo.csv"');
header('Pragma: no-cache');
header('Expires: 0');
    $fp = fopen('php://output', 'w');
      $data=$mycsvfile_result;
      foreach ( $data as $line ) 
      {
        fputcsv($fp, $line);
      }
    fclose($fp);
exit();

为 fputcsv 尝试了代码 2

$csv = "col1,col2 \n";//Column headers
  foreach ($mycsvfile_result as $record)
  {
    $csv.= $record[0].','.$record[1]."\n"; //Append data to csv
  }
$csv_handler = fopen ('demo.csv','w');
fwrite ($csv_handler,$csv);
fclose ($csv_handler);
echo 'Data saved to demo.csv';

以上代码1的结果

id1,email1 id2,email2 id3,email3 

以上代码2的结果

col1,col2 id1,email1 id2,email2 id3,email3 Data saved to demo.csv

【问题讨论】:

  • $data = array("{$arr2[2]},{$arr2[7]}",); 哇!!!为什么不直接构建一个普通的数组?
  • $data = array("$arr2[2],$arr2[7]",);也试过这个@MarkBaker
  • 每次发现东西都设置标题是多余的
  • 我已经更新了上面的代码,但结果仍然相同@u_mulder
  • 你为什么将你在该数组中构建的值引用到单个字符串中?你想达到什么目的?

标签: php fputcsv


【解决方案1】:

我在 linux 机器上工作,我忘记授予文件夹上传 csv 文件的权限。授予文件夹权限后,它就像一个魅力:)

【讨论】:

    猜你喜欢
    • 2020-09-13
    • 2020-02-14
    • 2017-03-25
    • 2019-09-25
    • 2019-08-04
    • 2016-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多