gpt4 book ai didi

PHP 比较两个 CSV 文件并突出显示差异

转载 作者:行者123 更新时间:2023-12-02 23:02:57 24 4
gpt4 key购买 nike

我想比较两个 CSV 文件并突出显示差异所在。目前我有一个小脚本可以读取 CSV 文件并将内容打印到浏览器上。这些文件的列号结构相同,但某些行中的值不同,我想强调这种差异,但不确定从哪里开始:

PHP 代码:

<?php
$file = fopen("try.csv","r");
$file2 = fopen("try2.csv", "r");

if(! feof($file)){

while($data = fgetcsv($file))
{
foreach($data as $element){
echo $element.' ';
}

echo '<br />';


}
}

echo '<br />';
echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>New File<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<";
echo '<br />';

if(! feof($file2)){

while($data = fgetcsv($file2))
{
foreach($data as $element2){
echo $element2.' ';
}

echo '<br />';


}
}


fclose($file);
?>

知道变量 $element$element2 保存 CSV 内容,我怎样才能找到差异......?

最佳答案

fgetcsv 返回当前行的数组,因此如果内存不是问题,您可以提取第一个 csv 的行并将每行存储在数组中,如 $ csv_1,然后第二个为 $csv_2,然后使用 array_udiff查找不重叠的行。

function row_compare($a, $b)
{
if ($a === $b) {
return 0;
}

return (implode("",$a) < implode("",$b) ) ? -1 : 1;
}

$file1 = new SplFileObject("try.csv");
$file1->setFlags(SplFileObject::READ_CSV);

$file2 = new SplFileObject("try2.csv");
$file2->setFlags(SplFileObject::READ_CSV);

foreach ($file1 as $row) {
$csv_1[] = $row;
}

foreach ($file2 as $row) {
$csv_2[] = $row;
}

$unique_to_csv1 = array_udiff($csv_1, $csv_2, 'row_compare');
$unique_to_csv2 = array_udiff($csv_2, $csv_1, 'row_compare');

$all_unique_rows = array_merge($unique_to_csv1,$unique_to_csv2);

foreach($all_unique_rows as $unique_row) {
foreach($unique_row as $element) {
echo $element . " ";
}
echo '<br />';
}

关于PHP 比较两个 CSV 文件并突出显示差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24235045/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com