问题
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