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-й строке. Так может кто-нибудь сказать мне, как решить эту проблему. Извините, но я не могу изменить базу данных. Любая помощь и предложения будут действительно заметны. Спасибо

0 ответов

Другие вопросы по тегам