3

配列のすべての組み合わせを取得して後でリストを生成できる関数を作成しようとしています。しかし、私の問題は、現在、私の関数が「ab」を「ba」とは異なるものとして扱っていることです。言葉で説明する方法はわかりませんが、下の図は私が達成しようとしていることを例示していると思います.

ここに画像の説明を入力

function everyCombination($array) {
  $arrayCount      = count($array);
  $maxCombinations = pow($arrayCount, $arrayCount);
  $returnArray     = array();
  $conversionArray = array();
  foreach ($array as $key => $value) {
    $conversionArray[base_convert($key, 10, $arrayCount)] = $value;
  }
  for ($i = 0; $i < $maxCombinations; $i++) {
    $combination = base_convert($i, 10, $arrayCount);
    $combination = str_pad($combination, $arrayCount, "0", STR_PAD_LEFT);
    $returnArray[] = strtr($combination, $conversionArray);
  }
  return $returnArray;
}

$a = everyCombination(array('a', 'b', 'c','d'));
print_r($a);

望ましい出力は次のようになります

a
ab
abc
abcd
b
bc
bcd
c
cd
d
4

2 に答える 2