PHP数组排列uniq有序

PHP Array permutation uniq ordered

原来我的数学运算错了!阅读 PHP array combinations 组合示例


我现在在网上搜索了 3 周(包括 SO)我没有找到已经问过或解决过它的人。

我需要 PHP 中只有 uniq ordered 值的数组排列。

<code>$array = array('Number1', 'Number2', 'Number3', 'Number4', 'Number5', 'Number6');

通常排列会像

<code> .1 Number1, Number2, Number3, ...; .2 Number1, Number2, Number4, ...; .3 Number2, Number4, Number1, ...;

但我需要 ordereduniq。所以第 3 行将被命令为

<code> .1 Number1, Number2, Number3, ...; .2 Number1, Number2, Number4, ...; .3 Number1, Number2, Number4, ...;

这意味着第 3 行不是唯一的,不会保存在新数组中。

第二个例子

<code>array('A','B','C') A AB AC ABC ACB B BC BA BCA BAC C CA CB CAB CBA 对我来说是错误的

我需要这样的输出

<code> A B C AB BC AC ABC

到目前为止我有点解决了。但是我的解决方案就像 stoneage,只是对所有新的 array_permutations 和 array_filter 进行排序。这就像 100 年的计算时间,因为 6 个数字排列成所有的可能性就像 X^10 -.-

请大家帮帮我。

顺便说一句:这是我第一次 post 在这里,所以要温柔 :D

我强烈建议您看一下名为 itertools 的 python 模块。

它是一个用于高效循环的模块,包含大量涉及排列、组合等的操作。

尽管是用 python 语言编写的模块,但将代码移植到 PHP 语言应该不难。但是,由于其中一些操作可能需要大量内存使用,因此使用 PHP 5.5+ 是个好主意,因为在此版本中包含 generators