4

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

4
  • $output variable may be double dimentional array. please print the $output variable. Commented Jun 2, 2015 at 8:05
  • I suggest to use xml instead of csv. It's impossible to keep the correct structure of nested arrays in csv. Commented Jun 2, 2015 at 8:06
  • Not everything can be csved. What about the nesting levels? Commented Jun 2, 2015 at 8:09
  • is it possible the values of $output change between the print_r and the fputcsv() ? Your modified version looks fine to me, but maybe if you show us the code that generates $output it might shed some light on it... Commented Jun 2, 2015 at 15:13

2 Answers 2

2

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); } 
Sign up to request clarification or add additional context in comments.

3 Comments

How to add header for the column?
@NewUser - is it possible the values of $output change between the print_r and the fputcsv() ?
To add headers, simply add 1 line of CSV containing the header names... i.e. fputcsv($fp, array("Listing ID", "Category ID", etc, etc)) before the loop.
0

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.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.