Как расположить в алфавитном порядке используя php - PullRequest
3 голосов
/ 03 июня 2011

У меня есть 2 простых текстовых файла, которые содержат несколько слов, например:

Файл 1

Aarhus
Abbott
Abbott's
Abel
Abelian
Abelson
Abelson's
Aberdeen
Aberdeen's

Файл 2

Acapulco
Ackerman
Acta
Adam
Adams
Adamson

Это просто примерный список, файлы содержат более 10000 записей и слова могут быть размещены в любом порядке. но одна вещь, которая облегчает, состоит в том, что каждая строка содержит только одно слово. Теперь я знаю, как читать эти значения, используя php один за другим, но я не могу понять , как объединить эти два файла и отсортировать их по алфавиту. Может кто-нибудь подсказать мне, как выполнить сортировку?

EDIT

Еще одна вещь, которую стоит упомянуть: Как вы можете видеть, есть некоторые слова, содержащие ' одинарные кавычки. Пожалуйста, предложите мне ответы, которые учитывают этот параметр при сортировке.

ДОПОЛНИТЕЛЬНОЕ РЕДАКТИРОВАНИЕ

Я хочу удалить дубликаты значений из файлов. Например, если есть 2 одинаковых слова, то их следует использовать только один раз.

Ответы [ 4 ]

7 голосов
/ 03 июня 2011
$entries = array_merge(
             file('file_one', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES),
             file('file_two', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES)
           );
$entries = array_unique($entries);
sort($entries);
2 голосов
/ 03 июня 2011
$lines = array_merge(file('file1.txt'), file('file2.txt'));
sort($lines);
0 голосов
/ 03 июня 2011

Поскольку отдельные файлы отсортированы по отдельности, вы можете выполнить алгоритм сортировки слиянием.

Вот некоторый псевдокод:

A -> File 1
B -> File 2
C -> SortedFile
While(A and B have lines left){
  Left = NextLineFromA
  Right= NextLineFromB
  If = Left < Right // strcmp(...)
    Write Left to C
  Else
    Write Right to C
}
// Now either A or B will have lines left
Write all lines left from A||B to C

Или вы можете прочитать их, выполнить array_merge (), а затем sort ()

Я думаю, что это будет быстрее, потому что вам не нужно заново сортировать все, когда вы вызываете sort ()

Функция сортировки php - это алгоритм быстрой сортировки O (n log (n)), и таким образом O (n)

0 голосов
/ 03 июня 2011

Сохраните оба файла в массиве, затем используйте php sort ?.-.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...