PHP конвертирует файлы CSV в массивы и пересекает

У меня есть шесть файлов CSV, которые я хочу преобразовать в отдельные массивы, а затем пересечь эти массивы, чтобы увидеть все значения, похожие в каждом из них. У меня пока так:

 $directory = "/csv/CSS_AUDIT/";

 if (! is_dir($directory)) {
     exit('Invalid directory path');
 }

 $files = array();

 foreach (scandir($directory) as $file) {
     if ('.' === $file) continue;
     if ('..' === $file) continue;

     $files[] = $file;

      $row = 1;

     if (($handle = fopen("/csv/CSS_AUDIT/$file", "r")) !== FALSE) {
         while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
             $num = count($data);
             $row++;
             for ($r=0; $r < $num; $r++) {
                 echo $data[$r];
                 if (!empty($data[$r])) 
                    echo "\n";
             }
         }
         fclose($handle);
     }

 }

Прямо сейчас он перебирает файлы и дает мне все в одном большом массиве, и я просто застрял. Любые советы о том, как достичь того, что я пытаюсь сделать?


person user2191353    schedule 11.09.2015    source источник


Ответы (1)


Если файлы не слишком большие, вы можете загрузить их в массив и либо проверить, что такого значения не существует в массиве перед добавлением в него, либо запустить array_unique(), когда закончите. См. это для справки.

Если файлы слишком велики, вам придется использовать некоторые другие, более сложные и трудоемкие методы (например, чтение (надеюсь, отсортированного) вывода каждый раз перед вставкой новой строки).

person uri2x    schedule 11.09.2015