2015-04-13 11 views
2

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

} 
+0

Что разделителем делает ваш файл CSV имеет? – Rizier123

+1

«Ни один из них не работал» не помогает. В чем проблема? – arkascha

+0

Он использует запятые, чтобы разделить информацию – Dgeorgex000000

ответ

4

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

(Здесь я первый захватить все файлы из каталога, в котором есть расширение *.csv с glob(). После этого I цикла через каждый файл и читать его с 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; 
     } 

    } 

?> 
+0

Omg, который является отличным благодарностью, есть ли способ нацеливать определенные данные на заголовок? – Dgeorgex000000

+0

@ Dgeorgex000000 Добро пожаловать! (* есть способ нацеливать определенные данные по его заголовку * Что именно вы имеете в виду?) – Rizier123

+0

Каждая строка данных в csv находится под заголовком/заголовком, есть простой способ только выбирать данные из определенных заголовков так, например, просто информация в строке 4 или просто информация в заголовке xxx – Dgeorgex000000

0

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

$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

1. Чтобы проверить каждый файл, если он не является '.', а' ..' для всего цикла не очень понятен 2. '$ csv = fgetcsv();' что? – Rizier123

+0

@ Rizier123 около 2: извините, случайная паста :-(Спасибо, что указали это. – arkascha

+0

@ Rizier123 Около 1: «не очень понятно»? Существуют, конечно, многопользовательские способы сделать это, вы используете «glob», штраф Кроме того, что «непонятно» с этим условием? – arkascha