PHP字符串比较没有按预期工作


PHP String Comparison not working as expected

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

$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"的精确副本。

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

感谢大家的回复。我无意中漏掉了一个线索,那就是我是在Mac电脑上。我重新保存了CSV以使用Windows格式,并重新运行了我的脚本,一切都很好。我猜是台词结尾的问题。无论如何,底线是脚本工作。