Мне нужна помощь при чтении папки и открытии / выводе данных csv, я использовал примеры, написанные другими людьми, но ни один из них не работал для меня.
То, что у меня сейчас есть, но это не выводит файлы:
$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) }
Это должно сработать для вас:
(Здесь я сначала извлекаю все файлы из каталога с расширением *.csv
с glob()
. После этого я просматриваю каждый файл и читаю его с помощью fopen()
и 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; } } ?>
Вероятно, первая проблема заключается в том, что вы должны игнорировать две записи в каталоге .
и ..
которые имеют особое значение и не полезны для вас:
$files = scandir($PathToCreate.$version."/"); //scan the folder foreach($files as $file) { //for each file in the folder if ( ! in_array($file, ['.','..'])) { $lines = file($file, FILE_IGNORE_NEW_LINES); foreach ($lines as $key => $value) { $csv[$key] = str_getcsv($value); } print_r($csv) } }