Reading *.csv files from directory and showing the content of each file fails

Dgeorgex000000 picture Dgeorgex000000 · Apr 13, 2015 · Viewed 8.5k times · Source

I need help with reading the folder and opening / outputting the csv data, I have used examples other people have written but none of them have worked for me.

What I currently have is this, but it doesn't output the files:

$files = scandir($PathToCreate.$version."/"); //scan the folder
foreach($files as $file) { //for each file in the folder

//The following is another example I found but does not output anything I just need to open each file and be able to output / target specific data

$csv = array();
$lines = file($file, FILE_IGNORE_NEW_LINES);

foreach ($lines as $key => $value)
{
    $csv[$key] = str_getcsv($value);
} 
print_r($csv)

}

Answer

Rizier123 picture Rizier123 · Apr 13, 2015

This should work for you:

(Here I first grab all files out of the directory which have the extension *.csv with glob(). After this I loop through each file and read it with fopen() and fgetcsv().)

<?php

    $files = glob("$PathToCreate$version/*.csv");

    foreach($files as $file) {

        if (($handle = fopen($file, "r")) !== FALSE) {
            echo "<b>Filename: " . basename($file) . "</b><br><br>";
            while (($data = fgetcsv($handle, 4096, ",")) !== FALSE) {
                echo implode("\t", $data);
            }
            echo "<br>";
            fclose($handle);
        } else {
            echo "Could not open file: " . $file;
        }

    }

?>