我有超过 1,000,000 行,其中包含一些需要检测并分组在一起的重复项。
分组看起来像这样(在数组中):
0 -> 4123
3 -> 344,98222
10 -> 12,333423
12 -> 756
15 -> 1,10,30400
我需要做的是浏览此列表并为每组重复项分配一个组号。这里的问题是一个键可能被分组到另一个,但是这个不是分组,而是再次向前分组到另一个。所有这些都必须在同一个组中。
使用我上面的例子,你可以看到 10 被分组到 12,12 被分组到 756,15 被分组到 1,10 和 30400。这意味着 10,12,333423,756,15,1,30400 全部必须在同一组!
所以我需要一种有效的方法来对所有这些分组应用一个数字。即$group[10]=1; $group[12]=1; $group[333423]=1;
所有这些,以及每个分组。
我必须找到一种有效的方法来做到这一点,因为有这么多行。它们只能真正循环一次。我尝试过使用蛮力检查所有内容,但如果我必须遍历 1,000,0000 * 1,000,0000,那么脚本将永远不会结束,因为它的计算量太多。
这全是 PHP,一切都在数组中。此时它不在 MySQL 数据库中,因为我不需要它。
想法?
更新
我自己想通了,看看我的答案。