PHP CSV差异脚本

PHP CSV差异脚本,php,csv,merge,diff,ignore,Php,Csv,Merge,Diff,Ignore,我目前正在编写一个简单的PHP脚本/站点,将两个csv文件的差异保存在第三个文件中 目前我唯一的问题是,我想忽略一个特定的行(客户id),该行会不时更改 我正在写一个时事通讯系统,我有两个csv文件和客户数据,我正在检查电子邮件地址是否自上一个csv文件以来发生了变化 我怎么能忽略客户id呢?我不能只是删除该列,因为我以后需要该列 以下是我的结构: CSV文件1(旧数据库): CSV文件2(新数据库): 如您所见,在较新的文件中,John和Anna Doe的客户id发生了更改,应该忽略这一点 不

我目前正在编写一个简单的PHP脚本/站点,将两个csv文件的差异保存在第三个文件中

目前我唯一的问题是,我想忽略一个特定的行(客户id),该行会不时更改

我正在写一个时事通讯系统,我有两个csv文件和客户数据,我正在检查电子邮件地址是否自上一个csv文件以来发生了变化

我怎么能忽略客户id呢?我不能只是删除该列,因为我以后需要该列

以下是我的结构:

CSV文件1(旧数据库):

CSV文件2(新数据库):

如您所见,在较新的文件中,John和Anna Doe的客户id发生了更改,应该忽略这一点

不应该忽视的是,John Doe的电子邮件和Will Smith的邮政编码发生了变化。第二个“步骤”非常有效

这是我的全部代码:(大约30行)。主要有以下几个部分:

$file1 = file('2015-07-01.csv', FILE_IGNORE_NEW_LINES);
$file2 = file('2015-07-09.csv', FILE_IGNORE_NEW_LINES);

sort($file1);
sort($file2);

$diff = array_diff($file2, $file1);
array_unshift($diff, $_POST['csv_cols']);
$output = substr(md5(rand()), 0, 5). "-output.csv";
file_put_contents($output, implode(PHP_EOL, $diff));

unlink($file1_name);
unlink($file2_name);

header('Content-Description: Download ' . $output);
header('Content-Type: application/force-download');
header("Content-Type: application/download");
header("Content-Length: " . filesize($output));
header("Content-disposition: attachment; filename=\"" . basename($output) . "\"");
readfile($output);
unlink($output);
exit;
谢谢


Florian

提示:如果您可以将代码的相关部分放在问题中,而不是让人们访问第三方链接,这将非常有帮助。您是否尝试过在分散之前删除要忽略的列?
customerid,sex,name,firstname,zip,email
1,male,smith,will,2224,will.smith@gmail.com
7,male,doe,john,7367,john@gmail.com
20,female,doe,anna,7367,anne@doe.com
$file1 = file('2015-07-01.csv', FILE_IGNORE_NEW_LINES);
$file2 = file('2015-07-09.csv', FILE_IGNORE_NEW_LINES);

sort($file1);
sort($file2);

$diff = array_diff($file2, $file1);
array_unshift($diff, $_POST['csv_cols']);
$output = substr(md5(rand()), 0, 5). "-output.csv";
file_put_contents($output, implode(PHP_EOL, $diff));

unlink($file1_name);
unlink($file2_name);

header('Content-Description: Download ' . $output);
header('Content-Type: application/force-download');
header("Content-Type: application/download");
header("Content-Length: " . filesize($output));
header("Content-disposition: attachment; filename=\"" . basename($output) . "\"");
readfile($output);
unlink($output);
exit;