【问题标题】:PHP Array permutation uniq orderedPHP数组排列uniq有序
【发布时间】:2016-02-01 17:28:09
【问题描述】:

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


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

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

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

通常排列会像

.1 Number1, Number2, Number3, ...; .2 Number1, Number2, Number4, ...; .3 Number2, Number4, Number1, ...;

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

.1 Number1, Number2, Number3, ...; .2 Number1, Number2, Number4, ...; .3 Number1, Number2, Number4, ...;

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

第二个例子

array('A','B','C') A AB AC ABC ACB B BC BA BCA BAC C CA CB CAB CBA 我错了

我需要这样的输出

A B C AB BC AC ABC

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

请帮帮我。

顺便说一句:这是我在这里的第一篇文章,所以要温柔:D

【问题讨论】:

    标签: php arrays permutation uniq


    【解决方案1】:

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

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

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

    【讨论】:

    • 你的回答对我有帮助:D 因为我在寻找错误的数学运算。我需要的是“组合”而不是“排列”,我可以从你的链接中读出。所以thx因为:排列('ABCD',2)AB AC AD BA BC BD CA CB CD DA DB DC //但是组合('ABCD',2)AB AC AD BC BD CD mathsisfun.com/combinatorics/…
    • 很高兴它对您有所帮助。
    猜你喜欢
    • 1970-01-01
    • 2018-09-29
    • 2011-03-26
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    相关资源
    最近更新 更多