我需要像这样获取两个 csv 文件的区别
comm -13 <(sort file1.csv) <(sort file2.csv) > file3.csv
这很好用,但是如何从 PHP 实现相同的过程,一些提示可以为我指明正确的方向。(已编辑)
ABC, 12, 1
DEF, 10, 1
GHI, 0, 0
ABC, 8, 1
DEF, 10, 1
GHI, 2, 0
最终的 CSV 应该是这样的:
ABC, 8, 1
GHI, 2, 0
没有 exec() 可以使用,那么您将如何使用 PHP 以有效的方式处理这个问题?
我在下面尝试了 Marc 的解决方案:
<?php
$file1 = file('file1.csv');
$file2 = file('file2.csv');
sort($file1);
sort($file2);
var_dump($file1);
var_dump($file2);
$diff = array_diff($file2, $file1);
var_dump($diff);
?>
返回这个
ABC, 8, 1
DEF, 10, 1
GHI, 2, 0
当我手动对它们进行预排序时,它工作正常。然而,当我在应用排序后转储数组时,它们似乎已排序?
问题似乎是最后一行后面没有换行符。
$file1 = file('file1.csv',FILE_IGNORE_NEW_LINES);
$file2 = file('file2.csv',FILE_IGNORE_NEW_LINES);
FILE_IGNORE_NEW_LINES似乎可以修复它。
因此,如果您添加 FILE_IGNORE_NEW_LINES,Marc 的解决方案将非常有效。