У меня есть массив. Когда я использую print_r($output)
. Я получаю массив как это
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] => ) )
Я хочу экспортировать это в файл csv. Поэтому для этого я сделал свой код таким образом
$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();
Но здесь я получаю файл, но когда я открываю файл, он показывает только массив (). Так может кто-нибудь сказать мне, как получить данные в csv? Любая помощь и предложения будут действительно заметны. благодаря
Ваш массив не является CSV-совместимым, поскольку он многомерный.
Чтобы поместить в CSV, вам нужно преобразовать каждый элемент $ output в одномерный массив:
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); }
При передаче вложенного массива в fputcsv
внутренний массив будет отображаться как «Массив». Сначала вы должны сгладить свой массив или форматировать его таким образом, который соответствует вашему желаемому CSV-формату.