小编Luc*_*Luc的帖子

生成所有输入组合/排列的高效 PHP 算法

我正在尝试为多个输入计算数组中一组值的所有组合。类似于这个问题:

PHP 算法从单个集合生成特定大小的所有组合

例如:

function sampling($chars, $size, $combinations = array()) {

  if (empty($combinations)) {
      $combinations = $chars;
  }

  if ($size == 1) {
      return $combinations;
  }

  $new_combinations = array();

  foreach ($combinations as $combination) {
      foreach ($chars as $char) {
          $new_combinations[] = $combination . $char;
      }
  }
  return sampling($chars, $size - 1, $new_combinations);
}

$chars = array('a', 'b', 'c');
$output = sampling($chars, 2);
echo implode($output,', ');
Run Code Online (Sandbox Code Playgroud)

输出:

aa, ab, ac, ba, bb, bc, ca, cb, cc
Run Code Online (Sandbox Code Playgroud)

但问题是当我把它提升到一个更大的列表时,例如:

$chars = array('a', 'b', …
Run Code Online (Sandbox Code Playgroud)

php php-generators

2
推荐指数
1
解决办法
3972
查看次数

标签 统计

php ×1

php-generators ×1