Считать файлы * .csv из каталога и показать содержимое каждого файла не удается

Мне нужна помощь с чтением папки и открытием / выводом данных 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)

}

3

Решение

Это должно работать для вас:

(Здесь я сначала беру все файлы из каталога, которые имеют расширение *.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;
}

}

?>
5

Другие решения

Первая проблема, вероятно, заключается в том, что вы должны игнорировать две записи каталога . а также .. которые имеют особое значение и не полезны для вас:

$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)
}
}
0

По вопросам рекламы [email protected]