php make csv file for the array

懵懂的女人 提交于 2019-12-10 15:48:20

问题


I have an array. When I am using print_r($output). I am getting the array like this

array(
    [0] => Array
            (
                [listing_id] => 14
                [category_id] => Modern Australian
                [listing_name] => Boatshed Restaurant
                [image_name] => krish_logo.png
                [address] => 2, Thrower Drive
                [phone] => 07 5534 3888
                [introduction_text] => 
                [website] => 
                [payment_types] => 
                [open_days] => 
                [licenced] => 0
                [highchair] => 0
                [dress_code] => 

            )
    [1] => Array
            (
                [listing_id] => 13
                [category_id] => Indian,Restaurant,Take-away
                [listing_name] => Krish Indian Cuisine - Varsity Lakes
                [image_name] => krish_logo.png
                [address] => Shop B/228 Varsity Parade, The Piazza Varsity Lakes
                [phone] => 07 5578 8090
                [introduction_text] => <p>Welcome to Krish Indian Cuisine. An award winning north indian  restaurant which offers the very best in modern and indian-fusion  cuisine. If you prefer your food tantalizingly hot or subtly mild, Krish  Indian has something for you. Bring the whole family or maybe just an  intimate dinner for two. Whatever the reason you will enjoy the fabulous  food</p>
                [website] => http://www.testsite.com/
                [payment_types] => Cash,Visa,Mastercard,Eftpos
                [open_days] => TuesLunch,n,MonLunch,n,MonDinner,n,TuesBKfast,n,WedLunch,n,ThuDinner,n,ThuLunch,n,TuesDinner,n,WedDinner,n,FriDinner,n,FriLunch,n,SunDinner,n,SatLunch,n,SatDinner,n,SunLunch,n
                [licenced] => 0
                [highchair] => 1
                [dress_code] => Casual



            )
    [2] => Array
            (
                [listing_id] => 12
                [category_id] => Steak
                [listing_name] => Outback Jacks Bar & Grill - Southport
                [image_name] => 9_1552272162010moomoo.jpg
                [address] => 2, Barney Street
                [phone] => 07 5532 3271
                [introduction_text] => 
                [website] => 
                [payment_types] => 
                [open_days] => 
                [licenced] => 0
                [highchair] => 0
                [dress_code] => 

            )                

)

I want to export this to a csv file. So for that I made my code like this

$fichier = 'file.csv';
 header( "Content-Type: text/csv;charset=utf-8" );
 header( "Content-Disposition: attachment;filename=\"$fichier\"" );
 header("Pragma: no-cache");
 header("Expires: 0");

 $fp= fopen('php://output', 'w');

 foreach ($output as $fields) 
 {
    fputcsv($fp, $fields);
 }
 fclose($fp);
 exit();

But here I am getting the file but when I am opening the file it is showing only array(). So can someone tell me how to get the data in csv? Any help and suggestions will be really appreciable. Thanks


回答1:


Your array isn't really CSV friendly as it is multi-dimensional.

To put into CSV, you need to convert each element of $output to a one-dimensional array:

foreach ($output as $fields) {

   $csvrec = array(
        'listing_id' => $fields['listing_id'],
        'category_id' => $fields['category_id'], 
   // etc... etc...
   // down to...
        'parking' => $fields['dinning_details']['parking'],
        'byo_info' => $fields['dinning_details']['byo_info'],
        'indoor' => $fields['dinning_details']['capacity']['indoor'],
   // etc.. etc...
   );

   fputcsv($fp, $csvrec);
}



回答2:


When passing a nested array to fputcsv, the inner array will show up as 'Array'. You should first flatten your array or format it in a way that corresponds to your desired CSV format.



来源:https://stackoverflow.com/questions/30590546/php-make-csv-file-for-the-array

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!