PHP字符串比较无法按预期工作

时间:2013-05-11 05:01:11

标签: php fwrite fputs

我有以下代码片段,我试图用来读取一些文件,这些文件可能会重复两次或多次。这个脚本的目标是只写独特的行(没有重复),但由于某种原因,它似乎没有检测到相等。有什么想法吗?

$handle = @fopen("Old.csv", "r");
$new = @fopen("New.csv", "w");
$last_line = null;

if ($handle && $new) {
    while (($buffer = fgets($handle, 4096)) !== false) {
        if( $last_line != $buffer ) fwrite( $new, $buffer );
        $last_line = $buffer;
    }
    if (!feof($handle)) {
        echo "Error: unexpected fgets() fail\n";
    }
    fclose($handle);
    fclose($new);
}

以下是“Old.csv”

的示例
 apple
 apple
 orange
 grapes
 grapes
 grapes

“New.csv”应为:

apple
orange
grapes

但它最终成为“Old.csv”的精确副本。

2 个答案:

答案 0 :(得分:1)

在命令提示符下尝试cat old.csv | sort -u > new.csv要快得多。

答案 1 :(得分:0)

感谢大家的回复。我无意中遗漏了一条线索,就是我在Mac上。我重新保存了CSV以使用Windows格式并重新运行我的脚本,一切都很顺利。我猜这是行结尾。无论如何,底线是剧本的作用。