У меня есть шесть 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);
}
}
Прямо сейчас он просматривает файлы и дает мне все в одном большом массиве, и я просто немного застрял. Любой совет, как добиться того, что я пытаюсь сделать?
Если файлы не слишком большие, вы можете загрузить их в массив и либо проверить, что такого значения нет в массиве, прежде чем добавлять в него, либо запустить array_unique()
когда вы закончите. Увидеть этот для справки.
Если файлы слишком большие, вам придется использовать некоторые более сложные и трудоемкие методы (например, чтение (надеюсь отсортированного) вывода каждый раз перед вставкой новой строки).
Других решений пока нет …