У меня есть следующий фрагмент кода, который я пытаюсь использовать для чтения файла, который может иметь несколько строк, повторяющихся два или более раз. Цель этого скрипта - писать только уникальные строки (без дубликатов), но по какой-то причине кажется, что он не обнаруживает равенства. Есть предположения?Сравнение строк PHP не работает должным образом
$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
Но он оказался точной копией «Старый .csv».
Почему не просто 'uniq Old.csv> New.csv' в вашем среднем приглашении unix? –
логика apearrs будет звуковой ... можете ли вы подтвердить, что Old.csv отсортирован? – Orangepill
Я отредактировал свое оригинальное сообщение. Вся цель написания нового файла заключается в том, что дублированные строки не будут записаны. – pogeybait