我正在尝试编写一个函数,它将生成一个可能的数组组合。
例子 :
$a = array('0', '1', '2');
// wanted results
// 0
// 1
// 2
// 0 0
// 0 1
// 0 2
// 1 0
// 1 1
// 1 2
// 2 0
// 2 1
// 2 2 and so on..
我想一次只得到一个组合,而不是全部组合到一个数组中。
就像是 :
getCombination(); // 0
getCombination(); // 1
getCombination(); // 2
getCombination(); // 0 0 and so on...
我的代码看起来像这样(但它没有按预期工作):
$val = array('0', '1', '2');
$now = array();
$t = 0;
$c = 0;
$v = 0;
$x = array();
function inc()
{
global $val, $now, $t, $c, $v, $x;
if(count($x) <> $c)
{
for($i = -1; ++$i < $c + 1;)
{
$x[$i] = 0;
$now[$i] = $val[0];
}
}
$now[$v] = $val[$t];
if($t + 1 >= count($val))
{
if($c)
{
if($v >= $c)
{
$v = 0;
++$c;
}
else
{
++$v;
}
}
else
{
++$c;
}
$t = 0;
}
else
{
++$t;
}
echo implode(' ', $now), '<br>';
}
for($i = 0; $i < 150; $i++)
{
inc();
}
我需要一个关于如何为此构建工作函数或类的想法。