PHP fputcsv добавляет нежелательные значения

Я хочу загрузить файл CSV с помощью fputcsv, пока все хорошо, но он добавляет дополнительные значения в потоковый файл (в данном случае Do., Re., Mi., Fa.).

Как я могу предотвратить это?

Такое ощущение, что я упускаю здесь что-то очевидное. Я использую простой PHP 7.4 без каких-либо фреймворков на машине с Ubuntu.

Любая помощь приветствуется!

class CsvDownload
{
    public function downloadFile($data)
    {
        header('Content-Type: text/csv; charset=utf-8');
        header('Content-Disposition: attachment; filename=blizzard.csv');
        $fh1 = @fopen('php://output', 'w');
        $headerDisplayed = false;
        foreach ($data as $row) {
            // Add a header row if it hasn't been added yet
            if (!$headerDisplayed) {
                // Use the keys from $data as the titles
                fputcsv($fh1, array_keys($row));
                $headerDisplayed = true;
            }
            // Put the data into the stream
            fputcsv($fh1, $row, ',');
        }
        // Close the file
        fclose($fh1);
        // Make sure nothing else is sent, our file is done
        exit;
    }

    public function execute()
    {
        //Unwanted
        echo "Do.";
        echo "Re.";
        echo "Mi.";
        echo "Fa.";

        $data = array(
            array('name' => 'A', 'mail' => '[email protected]', 'age' => 43),
            array('name' => 'C', 'mail' => '[email protected]', 'age' => 24),
            array('name' => 'B', 'mail' => '[email protected]', 'age' => 35),
            array('name' => 'G', 'mail' => '[email protected]', 'age' => 22),
            array('name' => 'F', 'mail' => '[email protected]', 'age' => 52),
            array('name' => 'D', 'mail' => '[email protected]', 'age' => 32),
            array('name' => 'E', 'mail' => '[email protected]', 'age' => 34),
            array('name' => 'K', 'mail' => '[email protected]', 'age' => 18),
            array('name' => 'L', 'mail' => '[email protected]', 'age' => 25),
            array('name' => 'H', 'mail' => '[email protected]', 'age' => 28),
            array('name' => 'J', 'mail' => '[email protected]', 'age' => 53),
            array('name' => 'I', 'mail' => '[email protected]', 'age' => 26),
        );
        $this->downloadFile($data);
    }
}

$csvDownload = new CsvDownload();
$csvDownload->execute();

person Ducky    schedule 23.10.2020    source источник
comment
Не повторяйте эти значения,   -  person Dark Knight    schedule 23.10.2020


Ответы (1)


Я нашел решение своей проблемы, прежде чем что-либо делать с fputcsv, очистите буфер с помощью ob_end_clean().

Таким образом, все предыдущие эхо не будут добавлены в файл.

person Ducky    schedule 29.10.2020