我有2个纯文本文件,其中包含一些单词,例如:
文件1
Aarhus
Abbott
Abbott's
Abel
Abelian
Abelson
Abelson's
Aberdeen
Aberdeen's
文件2
Acapulco
Ackerman
Acta
Adam
Adams
Adamson
这只是一个示例列表,文件包含超过10000个条目,并且可以按任何顺序放置单词。但有一点让人轻松就是每一行只包含一个单词。现在,我知道如何逐个使用php阅读这些值,但我无法理解如何合并这两个文件并按字母顺序排序。有人可以建议我如何进行排序部分吗?
修改
还有一件事需要提及:正如您所看到的,有些单词包含'
单引号。请在排序时建议我考虑此参数的答案。
进一步编辑
我想从文件中删除重复值。就像有两个相同的单词一样,那么它应该只采用一次。
答案 0 :(得分:7)
$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);
答案 1 :(得分:2)
$lines = array_merge(file('file1.txt'), file('file2.txt'));
sort($lines);
答案 2 :(得分:0)
将两个文件存储在一个数组中,然后使用php sort? .-。
答案 3 :(得分:0)
由于单个文件是单独排序的,因此您可以执行合并排序类型的算法。
这是一些伪代码:
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的sort函数是一种快速排序算法O(n log(n)),这种方式是O(n)