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

我想比较两个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 Singleton类实例将在多个会话中保留吗? - php

举一个简单的例子,如果我想计算一个不使用磁盘存储的脚本的命中次数,我可以使用静态类成员来执行此操作吗?用户1:<?php $test = Example::singleton(); $test->visits++; ?> 用户2:<?php $test = Example::singleton(); $test->visits+…

PHP:检查谁看过发送的电子邮件? - php

我正在向某些用户发送电子邮件,并且想知道是谁阅读的,这意味着如果有人阅读了该电子邮件,则将维护一个日志文件,其中包含该用户的电子邮件地址以及日期/时间/ IP。为此,我发送一个带有电子邮件(html模板)的javascript函数,当用户打开该电子邮件时,它仅会警告用户的电子邮件地址,例如:for($n=0; $n<sizeof($checkBox);…

通过>和<运算符比较日期 - php

在我的所有php代码中,我都在UTC中存储日期和时间,但是我也在使用mysql存储日期时间(也在utc中)。大于和小于运算符会导致日期比较失败吗? $curdate=date('Y-m-d H:i:s'); if($start_datetime>$curdate) 参考方案 不。他们没有办法失败。为此,特意制作了MySQL日期格式。…

PHP PDO组按列名称查询结果 - php

以下PDO查询返回以下结果:$db = new PDO('....'); $sth = $db->prepare('SELECT ...'); 结果如下: name curso ABC stack CDE stack FGH stack IJK stack LMN overflow OPQ overflow RS…

使用jquery计算<id>中的总图像 - php

我有一个div,里面有一些图像,例如<img src= etc我想计算该div中的图像总数。我也想使用PHP将这些图像ID保存到mysql中...谢谢 参考方案 要计算它们,您可以执行以下操作:alert($('#myDiv img').length); 要将所有id捕获到数组中,可以执行以下操作:var ids = []; $(&…