次のコード スニペットを使用して、いくつかの行を 2 回以上繰り返すことができるファイルを読み取ろうとしています。このスクリプトの目的は、一意の行のみ (重複なし) を書き込むことですが、何らかの理由で同等性を検出していないように見えます。何かご意見は?
$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」の正確なコピーになってしまいます。