3

在工作了将近一整天之后,我的大脑陷入了如何解决这个问题的想法中。一个例子。

  1. 1、
  2. X,
  3. 2、
  4. 1x,
  5. 1、
  6. 2、
  7. X,
  8. 1、
  9. 2、
  10. 1、
  11. X,
  12. X,
  13. 1..

那是一张优惠券,我希望在组合的可能性之后对其进行排序假设这张优惠券有两种可能性:1x2112x121xx1, 1x2x12x121xx1..第四场比赛是不同的比赛..

所以......我的问题是应该如何以编程方式完成。

我从数据库中获取数据,它看起来像这样。

array(
    "gameNumber" => "1", 
    "bets" => array(
        [0] => "1"
    ), 
    "gameNumber" => "2", 
    "bets" =>  array(
        [0] = "x"
    ), 
    "gameNumber" => "3", 
    "bets" => array(
        [0] = "2"
    ), 
    "gameNumber" => "4", 
    "bets" => array(
        [0] = "1", 
        [1] = "x"
    )
);

我不确定这会对您有所帮助,但这就是它的外观。

在最后一个答案的帮助下,我已经将它全部放入一个递归数组中: 如何构建递归函数来列出多级数组的所有组合?.

所以我的新递归函数如下所示:

public function _combine_bets($array)
{
    $cur = array_shift($array);
    $result = array();

    if(!count($array)) {
        foreach($cur['bets'] as $option) {
            $result[] = $cur['matchNumber']."-".$option;
        }
        return $result;
    }
    foreach($cur['bets'] as $bet) {
        $result[$cur['matchNumber'].'-'.$bet] = $this->_combine_bets($array);
    }
    return $result;
}

这样我就得到了这个数组: http: //pastie.org/5692408

Soo.....回到我的问题,我想让这看起来只是赌注的价值......假设它应该看起来像这样:1x2112x121xx1、1x2x12x121xx1。而不是一个大数组。我需要为所有可能的情况做这个,这是一张只有 2 种不同可能性的优惠券,但是.. 它可以更多。

用户可以在比赛中选择 1,x,2,1x,12,x2,1x2 我的意思是用户在 13 种不同游戏中的所有选项,

如果您需要更多信息,请告诉我,我会更新这个..

4

2 回答 2

1

主要问题是为什么你想要一个递归函数?这是一个没有递归的解决方案。

public function _combine_bets($array) {

    $result = '';
    foreach($array['bets'] as $bet) {
        $result .= $bet;
    }
// returns string
return $result;
}

你想退货什么?为什么需要递归函数?

我不明白这个问题。

于 2013-01-16T11:25:01.813 回答
1

我把不可能的事情变成了可能,别问我是怎么做到的!

function _combine_bets($array, $curBet = null, $currentRow = null)
{
    $cur = array_shift($array);
    $result = array();

    if(!isset($currentRow))
        $currentRow = $curBet;
    else 
        $currentRow .= $curBet;


    if(!count($array)) {
        foreach($cur['bets'] as $bet) {
            $currentRow .= $bet;
            if(strlen($currentRow) == 13)
                $this->m_couponRows[] = $currentRow;
            $currentRow = null;
        }
        return $this->m_couponRows;
    }

    foreach($cur['bets'] as $bet) {
        $result[$bet] = $this->_combine_bets($array, $bet, $currentRow);
    }
    return $this->m_couponRows;
}
于 2013-01-16T14:03:06.670 回答