【问题标题】:php create csv from associative arrayphp从关联数组创建csv
【发布时间】:2018-10-04 09:39:36
【问题描述】:

我必须从下面的数组生成 csv

Array
(
    [sku1] => Array
        (
            [bin1] => 10
            [bin2] => 5
            [bin3] => 10
        )

    [sku2] => Array
        (
            [bin2] => 10
            [bin10] => 9
        )

    [sku3] => Array
        (
            [bin3] => 7
        )

)

csv格式应该如下,

sku1,bin1,10

sku1,bin2,10

sku2,bin2,10

sku2,bin10,9

sku3,bin3,7

如何存档?

【问题讨论】:

  • 你有没有尝试过?你有代码吗?
  • 如何实现这一点 - 通过编写代码
  • 使用 fputcsv() 函数获取结果
  • 那么,您希望我们编写您的代码吗?向我们展示您迄今为止的尝试?

标签: php arrays export-to-csv


【解决方案1】:

使用 fputcsv() 函数试试这个例子也阅读这个链接for getting an idea about fputcsv()

$list = array (
array('aaa', 'bbb', 'ccc', 'dddd'),
array('123', '456', '789'),
array('"aaa"', '"bbb"')
);$fp = fopen('file.csv', 'w');
foreach ($list as $fields) {
fputcsv($fp, $fields);
}
fclose($fp);

【讨论】:

    【解决方案2】:

    试试看:

                        $array= [
                            'sku1' => [
                                'bin1' => 10,
                                'bin2' => 5,
                                'bin3' => 10
                            ]
                            ,
                            'sku2' => [
                                'bin2' => 10,
                                'bin10' => 9,
                            ],
                            'sku3' => [
                                'bin3' => 7
                            ]
                        ];
    
                        $fileContent=[];
    
                        foreach ($array as  $key =>$value1){
                             foreach ($value1 as $key2 => $value2){
                                 $fileContent[]=[$key, $key2, $value2];
                             }
                        }
    
    
                        $fp = fopen('file.csv', 'w');
    
                        foreach ($fileContent as $fields) {
                            fputcsv($fp, $fields);
                        }
    
                        fclose($fp);
    

    【讨论】:

      【解决方案3】:

      尝试: // 将标题设置为 csv 格式中的自动下载文件

      header("Content-Disposition: attachment; filename=\"demo.xls\"");
      header("Content-Type: application/vnd.ms-excel;");
      header("Pragma: no-cache");
      header("Expires: 0");
      $out = fopen("php://output", 'w');
      //this is your data array to be converted in csv 
      
      $result= 
      array('sku1'=>array('bin1'=>10,'bin2'=>5,'bin3'=>10),'
      sku2'=>array('bin2'=>10,'bin10'=>3),'sku3'=>array('bin3'=>7));
      
      $final=array();
      // now se are converting first array key in to node
      foreach($result as $key=>$val){
      // now se are converting second array key and value in to node
      foreach ($val as $k=>$v){
      // merging first array key and second array key values in to single array to 
      //make a csv
      $final[]=array($key,$k,$v);
      }
      
      }
      
      foreach ($final as $data)
      {
        //Now we are generating the csv from final array 
        fputcsv($out, $data,"\t");
      }   
      fclose($out);
      

      【讨论】:

      • 你能格式化代码并添加更多关于代码功能的文字吗?
      • 我已经编辑了代码并解释了代码的作用
      猜你喜欢
      • 1970-01-01
      • 2015-09-01
      • 1970-01-01
      • 2015-01-22
      • 2016-05-29
      • 1970-01-01
      • 1970-01-01
      • 2012-12-22
      • 2012-09-11
      相关资源
      最近更新 更多