<?php
/**
* Created by PhpStorm.
* User: mc
* Date: 2018/11/16
* Time: 5:35 PM
*/
/**
*
* @param $wagerPos
* @param $ma
*/
function splitOpenNum($wagerPos, $openNum, $ma) {
$vec = array();
$wagerPosCnt = count($wagerPos);
switch ($ma) {
case 2: {
//任二
for ($a = 0; $a < $wagerPosCnt; $a++) {
$tmp = array();
if ($wagerPos[$a] != 0) {
array_push($tmp, $openNum[$a]);
if (count($tmp) > 1) {
array_pop($tmp);
}
} else {
continue;
}
if ($a + 1 == $wagerPosCnt) {
array_pop($tmp);
}
for ($b = $a + 1; $b < $wagerPosCnt; $b++) {
if (count($tmp) >= 2) {
array_pop($tmp);
}
if ($wagerPos[$b] != 0) {
array_push($tmp, $openNum[$b]);
if (count($tmp) >= $ma) {
array_push($vec, $tmp);
array_pop($tmp);
}
} else {
continue;
}
if ($b + 1 == $wagerPosCnt) {
array_pop($tmp);
}
}
}
}
break;
case 3: {
// 任三
for ($a = 0; $a < $wagerPosCnt; $a++) {
$tmp = array();
if ($wagerPos[$a] != 0) {
array_push($tmp, $openNum[$a]);
if (count($tmp) > 1) {
array_pop($tmp);
}
} else {
continue;
}
if ($a + 1 == $wagerPosCnt) {
array_pop($tmp);
}
for ($b = $a + 1; $b < $wagerPosCnt; $b++) {
if (count($tmp) >= 2) {
array_pop($tmp);
}
if ($wagerPos[$b] != 0) {
array_push($tmp, $openNum[$b]);
if (count($tmp) > 2) {
array_pop($tmp);
}
} else {
continue;
}
if ($b + 1 == $wagerPosCnt) {
array_pop($tmp);
}
for ($c = $b + 1; $c < $wagerPosCnt; $c++) {
if (count($tmp) >= 3) {
array_pop($tmp);
}
if ($wagerPos[$c] != 0) {
array_push($tmp, $openNum[$c]);
if (count($tmp) >= $ma) {
array_push($vec, $tmp);
array_pop($tmp);
}
} else {
continue;
}
if ($c + 1 == $wagerPosCnt) {
array_pop($tmp);
}
}
}
}
}
break;
case 4: {
// 任四
for ($a = 0; $a < $wagerPosCnt; $a++) {
$tmp = array();
if ($wagerPos[$a] != 0) {
array_push($tmp, $openNum[$a]);
if (count($tmp) > 1) {
array_pop($tmp);
}
} else {
continue;
}
if ($a + 1 == $wagerPosCnt) {
array_pop($tmp);
}
for ($b = $a + 1; $b < $wagerPosCnt; $b++) {
if (count($tmp) >= 2) {
array_pop($tmp);
}
if ($wagerPos[$b] != 0) {
array_push($tmp, $openNum[$b]);
if (count($tmp) > 2) {
array_pop($tmp);
}
} else {
continue;
}
if ($b + 1 == $wagerPosCnt) {
array_pop($tmp);
}
for ($c = $b + 1; $c < $wagerPosCnt; $c++) {
if (count($tmp) >= 3) {
array_pop($tmp);
}
if ($wagerPos[$c] != 0) {
array_push($tmp, $openNum[$c]);
if (count($tmp) > 3) {
array_pop($tmp);
}
} else {
continue;
}
if ($c + 1 == $wagerPosCnt) {
array_pop($tmp);
}
for ($d = $c + 1; $d < $wagerPosCnt; $d++) {
if (count($tmp) >= 4) {
array_pop($tmp);
}
if ($wagerPos[$d] != 0) {
array_push($tmp, $openNum[$d]);
if (count($tmp) >= $ma) {
array_push($vec, $tmp);
array_pop($tmp);
}
} else {
continue;
}
if ($d + 1 == $wagerPosCnt) {
array_pop($tmp);
}
}
}
}
}
}
break;
}
return $vec;
}
// 测试
$wagerPos = array(0, 1, 1, 0, 1);
// 为了和wagerPos区分开,故意换成字母,实际代码中应用数字
$openNum = array("1", "2", "3", "4", "5");
$vec = splitOpenNum($wagerPos, $openNum, 2);
echo("任二:<br/>");
var_dump($vec);
echo("<br/><br/>>");
$vec = splitOpenNum($wagerPos, $openNum, 3);
echo("任三:<br/>");
var_dump($vec);
echo("<br/><br/>>");
$wagerPos = array(1, 1, 1, 0, 1);
$vec = splitOpenNum($wagerPos, $openNum, 4);
echo("任四:<br/>");
var_dump($vec);
echo("<br/><br/>>");
/***********/
$wagerPos = array(1, 1, 1, 1, 1);
$vec = splitOpenNum($wagerPos, $openNum, 2);
echo("任二:<br/>");
var_dump($vec);
echo("<br/><br/>>");
$vec = splitOpenNum($wagerPos, $openNum, 3);
echo("任三:<br/>");
var_dump($vec);
echo("<br/><br/>>");
$vec = splitOpenNum($wagerPos, $openNum, 4);
echo("任四2:<br/>");
var_dump($vec);
echo("<br/><br/>>");