我正在尝试创建允许我获取数组的所有组合以稍后生成列表的函数。但我的问题是,目前我的函数将“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