我有一个包含两个变量的PHP页面:$nbRank和$nbNumeric。根据这两个变量,我想生成一个包含所有现有组合的数组。例如:
$nbRank
$nbNumeric
如果$nbRank = 3和$nbNumeric = 2我有:
$nbRank = 3
$nbNumeric = 2
0 0 0 0 0 1 0 0 2 0 1 0 0 1 1 0 1 2 0 2 0 0 2 1 0 2 2 1 0 0 1 0 1 1 0 2 1 1 0 1 1 1 1 1 2 1 2 0 1 2 1 1 2 2 2 0 0 2 0 1 2 0 2 2 1 0 2 1 1 2 1 2 2 2 0 2 2 1 2 2 2
因此,我创建了不同的循环和公式来获得最终结果,但是它不起作用。这就是我所做的:
$result = array(); $nbIntRank = 0; $nbIntNumeric = 0; $nbRank = array(); $nbNumeric = array(); $nb_rangs = 3; $nb_chiffres = 2; for ($i = 1; $i <= $nb_rangs; $i++){ $nbRank[$i] = 0; } $nbIntRank = count($nbRank); for ($i = 0; $i <= $nb_chiffres; $i++){ $nbNumeric[$i] = $i; } $nbIntNumeric = count($nbNumeric); $algo = ($nb_rangs * ($nb_chiffres + 1)) * ($nb_rangs * ($nb_chiffres + 1)); $nbLine = $algo / ($nb_rangs); $occ = 0; for ($i = 0; $i < $nbLine; $i++){ foreach ($nbRank as $nbrItem => $nbrValue){ $result[$i][] = $nbrValue; $occ++; } } echo '#############<br />'; echo '### DATAS ###<br />'; echo '#############<br /><br />'; echo '- Nb Elements : '.$algo.'<br />'; echo '- Nb Lines : '.$nbLine.'<br />'; echo '- Nb Valuable Occurency : '.$occ.'<br />'; echo '<br /><hr /><br />'; echo '##############<br />'; echo '### PARSER ###<br />'; echo '##############<br /><br />'; echo '<pre>'; var_dump($result); echo '</pre>';
我设法用空值(81个值,在27行3个元素中)创建了最终数组,但其中只包含0。
这是一个递归解决方案:
$nbRank = 3; $nbNumeric = 2; function getCombinations ($length, $min, $max, $aStartingCombinations) { if ($length == 1) { return range ($min, $max); } $final = array (); foreach (getCombinations ($length - 1, $min, $max, $aStartingCombinations) as $combination) { for ($i = $min; $i <= $max; $i++) { $final [] = $combination . $i; } } return $final; } print_r (getCombinations ($nbRank, 0, $nbNumeric, array ()));