【问题标题】:How to export data from multidimentional array to csv如何将数据从多维数组导出到csv
【发布时间】:2019-04-05 16:36:54
【问题描述】:

我正在准备将一些数据导出到 csv。我可以在网络上打印数据,但是当我将其保存到 csv 文件时,它会显示:

Column 1,"Column 2"
Array,"Acme (Sample)",0011U00000AnbfaQAB
Array,"Global (Sample)",0011U00000AnbfbQAB

我怎样才能摆脱“阵列”?

我在这里获取数据并打印出来:

foreach ($records as $record)
{
print 'Name :';
print htmlspecialchars($record['Name']);
print ' - ';
print htmlspecialchars($record['Id']);
print '<br/>';
print "\n";
}

这是将数据保存到 csv 的代码:

$file = fopen('toNavasoft.csv', 'w');

// save the column headers
fputcsv($file, array('Column 1', 'Column 2'));

// save each row of the data
foreach ($records as $record)
{
fputcsv($file, $record);
}

// Close the file
fclose($file);

我刚刚添加了这个:

var_export ($records);

输出是:

array ( 0 => array ( 'attributes' => array ( 'type' => 'Account', 'url' => '/services/data/v20.0/sobjects/Account/0011U00000AnbfaQAB', ), 'Name' => 'Acme (Sample)', 'Id' => '0011U00000AnbfaQAB', ), 1 => array ( 'attributes' => array ( 'type' => 'Account', 'url' => '/services/data/v20.0/sobjects/Account/0011U00000AnbfbQAB', ), 'Name' => 'Global (Sample)', 'Id' => '0011U00000AnbfbQAB', ), )

我希望输出如下:

Column 1,Column 2
Acme (Sample),0011U00000AnbfaQAB
Global (Sample),0011U00000AnbfbQAB

【问题讨论】:

  • 只要我们不知道数组长什么样,那它就只是一个猜谜游戏。发布数组的 var_export
  • 我猜每个$record 中都有第三个元素,它是一个数组,当您尝试fputcsv() 时,它会将所有三个元素都放入其中。
  • 我只是用数组的输出来更新它。
  • @Oscar 阅读我的回答,以更详细地了解我在说什么。 Mohammed Yassine CHABLI 也有类似的解决方案。

标签: php multidimensional-array fputcsv


【解决方案1】:

您可以使用 fputcsv ,使用以下代码:

<?php

$result = array(['column1', 'column2']);
 foreach($records as $record){
  $result[] = [$record['Name'],$record['Id']];
 }


$fp = fopen('toNavasoft.csv', 'w');

foreach ($result as $fields) {
    fputcsv($fp, $fields);
}

fclose($fp);
?>

这里的重点是选择你要在cv中持久化的数据 文件到 $result 变量,然后继续你已经尝试过的 做。

希望对您有所帮助。

【讨论】:

    【解决方案2】:

    试试这个:

     <?php
        $file = fopen('toNavasoft.csv', 'w');
        $array=array('Column 1', 'Column 2');
    
    
        fwrite($file,print_r($array,TRUE));
    
    
        // Close the file
        fclose($file);
    
    
        ?>
    

    【讨论】:

      【解决方案3】:

      您正在打印一个位于$record 内部的额外数组。你说你的输出是:

      array ( 0 => array ( 'attributes' => array ( 'type' => 'Account', 'url' => '/services/data/v20.0/sobjects/Account/0011U00000AnbfaQAB', ), 'Name' => 'Acme (Sample)', 'Id' => '0011U00000AnbfaQAB', ), 1 => array ( 'attributes' => array ( 'type' => 'Account', 'url' => '/services/data/v20.0/sobjects/Account/0011U00000AnbfbQAB', ), 'Name' => 'Global (Sample)', 'Id' => '0011U00000AnbfbQAB', ), )
      

      这意味着您需要在运行 fputcsv() 之前取消设置 $record['attributes'],如下所示:

      foreach ($records as $record)
      {
        unset($record['attributes']);
        fputcsv($file, $record);
      }
      

      【讨论】:

      • 不错!爱你!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-06
      • 1970-01-01
      • 1970-01-01
      • 2014-01-09
      • 2020-11-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多