Php make csv file for array

I have an array. When i use print_r($output). I get an 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. Therefore, for this, I made my code as follows

$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 get the file, but when I open the file, it only shows an array (). So can someone tell me how to get data in csv? Any help and suggestions will be really noticeable. Thanks

+4
source share
2 answers

Your array is not compatible with CSV because it is multidimensional.

To insert in 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
source

fputcsv "". , CSV.

0

All Articles