簡體   English   中英

PHP從關聯數組創建CSV

[英]php create csv from associative array

我必須從下面的數組生成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

如何存檔?

嘗試:

                    $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);

使用fputcsv()函數嘗試此示例,還請閱讀此鏈接以獲取有關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);

try://將標頭設置為在csv foramt中自動下載文件

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM