gpt4 book ai didi

php - 如何创建值 BA 和 AB 被视为相同的二维数组

转载 作者:搜寻专家 更新时间:2023-10-31 21:36:03 25 4
gpt4 key购买 nike

我正在尝试创建允许我获取数组的所有组合以便稍后生成列表的函数。 但我的问题是目前我的函数将“ab”与“ba”区别对待。我不知道如何用语言来解释它,但我想下面的图片举例说明了我试图实现的目标。

enter image description here

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

最佳答案

您需要做的是递归地遍历数组,对于每次递归,您应该只遍历所有更大的元素。像这样:

function everyCombination($arr) {
$combos = array();
$len = count($arr);
for( $i=0; $i<$len; $i++) {
for( $j=$i+1; $j<=$len; $j++) {
$combos[] = implode("",array_slice($arr,$i,$j-$i));
}
}
return $combos;
}

调用示例:

everyCombination(['a','b','c','d']);

返回:

['a','ab','abc','abcd','b','bc','bcd','c','cd','d']

关于php - 如何创建值 BA 和 AB 被视为相同的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19297782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com