【发布时间】:2013-09-01 14:46:42
【问题描述】:
我已经编写了下面的函数,它接受一个数组并输出它的所有组合。
$option = array("a","b","c");
function combinations($array, $number) {
if ($number == 1) {
foreach ($array as $k => $v1) {
echo $v1 . "<br>";
}
} elseif ($number == 2) {
foreach ($array as $k => $v1) {
foreach ($array as $key => $v2) {
echo $v1 . " - " . $v2 . "<br>";
}
}
} elseif ($number == 3) {
foreach ($array as $k => $v1) {
foreach ($array as $key => $v2) {
foreach ($array as $key => $v3) {
echo $v1 . " - " . $v2 . " - " . $v3 . "<br>";
}
}
}
}
}
combinations($option, 2);
输出是:
a - a
a - b
a - c
b - a
b - b
b - c
c - a
c - b
c - c
它接受一个数字作为参数,并为组合返回 1、2 或 3 个插槽。但是,我提前不知道组合会有多少个插槽。大多数时候它可能在 1 到 3 之间,但我希望有一种方法可以重写它,以便它可以处理任意数量的插槽。
我是 PHP 新手,所以我确信我缺少一些简单的东西。如果有人能指出正确的方向,我将不胜感激。
更新:
我不确定这是php string permutation 的副本。如果我正确理解他们的问题,他们正在寻求进行 4 插槽组合。我可以使用函数中的另一个 elseif 块来完成此操作。我正在寻找一种方法来使这项工作适用于任意数量的插槽。如果我误解了,我深表歉意。
【问题讨论】:
标签: php arrays function combinations