【问题标题】:All possible combinations for a BIG array in PHPPHP中BIG数组的所有可能组合
【发布时间】:2015-03-18 11:44:34
【问题描述】:

我正在尝试 2 天来创建一个函数来获取所有可能的数组组合(没有顺序重复):

 public function power_set($array) {
    // initialize by adding the empty set
    $results = array(array( ));

    foreach ($array as $element)
        foreach ($results as $combination)
            array_push($results, array_merge($combination,array($element)));

    return $results;
}

$keys = array(0=>1,1=>2,3=>3,21=>4,4=>5,5=>6,6=>7,7=>8,9=>10,10=>23,11=>34234,12=>34234,13=>34234,14=>45435,15=>32343,16=>35324,17=>4535345,18=>5645645,19=>234,20=>23324);

 echo '<pre>'.print_r(power_set($keys),true).'</pre>';

它适用于 7 元素数组,但不止于此。我该如何解决?

【问题讨论】:

  • 你想要什么输出?
  • 您要删除重复项吗?
  • 我想要所有可能的数组值组合
  • @DanyalSandeelo BTW:如果您发布答案,OP 会收到通知,因此不需要此评论 ^。为了您的信息和未来:meta.stackoverflow.com/a/253835/3933332
  • @JohnMark 您能否添加您当前的输出和预期的输出。 (也许有一个更小的数组:D)

标签: php arrays combinations


【解决方案1】:

John 我认为这更多是您在哪里运行代码的问题。正如您问题中的一些 cmets 所指出的,您执行该函数的 php shell 的工作内存有限。

我测试了一个长度为 10 的数组,返回了 1024 个项目(正确的数量)。

尝试在控制台中将其作为文件运行:$ php test_file.php

【讨论】:

  • 我会试试的。但是尝试使用 20 或 30 个元素。这将是很多重复,也许它会耗尽内存。我正在尝试找到一种方法来解决它,也许使用 array_chunk 并将循环作业与不同的调用分开。
  • 是的,对我来说突破了 18 岁左右......你到底想在这里做什么?您应该重新格式化您的问题,以明确这是一个工作记忆问题,而不是程序功能问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-31
  • 2014-02-28
  • 2019-08-05
相关资源
最近更新 更多