php экспорт в csv смещает столбец, когда нет данных
Я получаю все значения из базы данных в виде массива. Поскольку это огромная база данных, я просто показываю две строки для справки.
Таким образом, массив выглядит следующим образом print_r($data);
array(
[0] => Array
(
[listing_id] => 5975
[category_id] => A la Carte|Bar|Banquet|Champagne Bar|Cajun Creole|German
[listing_name] => test-chris
[image_name] => SBCTR Logo.jpg
[address] => 1 surfe parade
[phone] => 0402331482
)
[1] => Array
(
[listing_id] => 5974
[category_id] =>
[listing_name] => Charlie Lovett
[image_name] => SBCTR Logo.jpg
[address] =>
[phone] =>
)
[2] => Array
(
[listing_id] => 5973
[category_id] => Banquet|Champagne Bar
[listing_name] => Charlie Lovett
[image_name] => SBCTR_1234 Logo.jpg
[address] =>
[phone] => 1231234567
)
)
Теперь я хочу экспортировать это как CSV. Так что я сделал свой PHP-код, как это
function export_to_csv($data, $filename="data.csv", $delim = ',', $newline = "\n", $enclosure = '' ) {
$string_to_export = '';
$c = 0;
foreach( $data as $row) {
$string_to_export .= $enclosure.implode($enclosure.$delim.$enclosure, ( $c ? array_values($row) : array_keys($row)) ).$enclosure.$newline;
$c++;
}
header('Content-type: text/csv;charset=utf-8');
header('Content-Disposition: attachment; filename='.$filename);
header("Cache-Control: no-cache");
//echo "\xEF\xBB\xBF";
echo $string_to_export;
exit();
}
export_to_csv($data, "data.csv");
Теперь, когда я открыл CSV, я увидел, что если в строке нет данных для столбца, то следующий столбец просто перемещается на один шаг назад. Как это
listing_id category_id listing_name image_name address phone
5975 A la Carte|Bar.... test-chris SBCTR Logo.jpg 1 surfe parade 1482
5974 Charlie Lovett SBCTR Logo.jpg
5973 Banquet|Champagne Bar Charlie Lovett SBCTR_1234 Logo.jpg 1231234567
Как видите, данные смещаются в столбец previus во 2-й и 3-й строке. Так может кто-нибудь сказать мне, как решить эту проблему. Извините, но я не могу изменить базу данных. Любая помощь и предложения будут действительно заметны. Спасибо