Php fput csv未添加第二行

Php fput csv未添加第二行,php,csv,Php,Csv,有人能看出这个代码有什么问题吗$输出是一个多维数组,所以我将其展平,然后将键和值拆分为单独的数组。我已经对$headers和$answers进行了var_转储,但是由于某种原因,fputscsv($buffer,$answers)没有做任何事情。标题看起来很好,因此该行周围的某些内容正在中断:/ function buildcsv($output) { $headers = array(); $answers = array(); foreach($output as $secti

有人能看出这个代码有什么问题吗$输出是一个多维数组,所以我将其展平,然后将键和值拆分为单独的数组。我已经对$headers和$answers进行了var_转储,但是由于某种原因,
fputscsv($buffer,$answers)
没有做任何事情。标题看起来很好,因此该行周围的某些内容正在中断:/

function buildcsv($output)
{
  $headers = array();
  $answers = array();

  foreach($output as $section) // Flatten sections into single array and remove config rows.
  {
     array_shift($section);
     array_pop($section);
     array_pop($section);

     foreach($section as $question => $answer)
     {
       array_push($headers, $question); // Build array for header row
       array_push($answers, $answer); // Build array for answers row
     }
  }

     array_push($headers, "Read terms and conditions"); // Add terms and consitions column.
     array_push($answers, "Yes");

     $buffer = fopen('php://temp', 'r+');
     fputcsv($buffer, $headers);
     fputcsv($buffer, $answers);
     rewind($buffer);
     $csv = fgets($buffer);
     fclose($buffer);
     return $csv;

 }

不确定,但最好写以下内容:php://temp/file.csv“?

因此,基于这样一个事实,出于某种原因,我似乎只能正确访问输出缓冲区,这就是我想到的。该函数允许另一段代码将表单的rsponse转换为CSV格式,然后将其附加到电子邮件中

// Generate csv
 function buildcsv($output)
 {
     $headers = array();
     $answers = array();

     foreach($output as $section) // Flatten sections into single array and remove config rows.
     {
        array_shift($section);
        array_pop($section);
        array_pop($section);
        foreach($section as $question => $answer)
        {
                array_push($headers, $question); // Build array for header row
                array_push($answers, $answer); // Build array for answers row
        }
     }

     array_push($headers, "Read terms and conditions"); // Add terms and conditions column.
     array_push($answers, "Yes");

     $buffer = fopen('php://output', 'r+');

     ob_start();

     fputcsv($buffer, $headers);
     fputcsv($buffer, $answers);

     rewind($buffer);
     $csv = ob_get_contents();

     ob_end_clean();
     return $csv;

 }

对于简单的CSV创建来说,这似乎过于复杂了…
fputcsv($buffer,$answers)
在foreach循环之外,因此您只调用它一次。因为您只放置一个answers数组,所以它只会写入一行answers@MarkBaker
$output
是表单中不同部分(个人详细信息、安全问题等)的数组,因此在推送到
$headers
$answers
数组后,只有一行标题(问题)和一行答案。但是答案没有被写出来,只有
$headers
还有,我试过
var\u dump($answers)数据就在那里,它只是没有被写入csvfputcsv()接受一个一维数组;你看起来好像在构建一个多维数组,并期望它仍然可以工作。。。调用
fputcsv()
将写入一行csv文件