3

ほぼ一日中働いた後、この問題を解決する方法について自分の考えで頭が固まりました。一例です。

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

それは 1 つのクーポンです。組み合わせの可能性の後に並べ替えたいと思います。このクーポンには 1x2112x121xx1、1x2x12x121xx1 の 2 つの可能性があるとします。4 番目の一致は異なるものです。

だから...私の質問は、これをプログラムでどのように行うべきかです。

データベースからデータを取得すると、次のようになります。

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

そうです.....私の質問に戻ります.これを賭けの値だけのように見せたい..次のように見えるとしましょう: 1x2112x121xx1, 1x2x12x121xx1. 大きな配列の代わりに。私はすべての可能性のためにこれを作成する必要があります.これは2つの異なる可能性に関するクーポンですが..それはもっとたくさんあります.

ユーザーは試合で 1,x,2,1x,12,x2,1x2 を選択できます。これは、ユーザーが 13 の異なるゲームで使用できるすべてのオプションであることを意味します。

さらに情報が必要な場合は、教えてください。これを更新します..

4

2 に答える 2

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 に答える
1

主な質問は、なぜ再帰関数が必要なのかということです。これは、再帰性のないソリューションです。

public function _combine_bets($array) {

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

何を返してほしいですか?なぜ再帰関数が必要なのですか?

質問がわかりません。

于 2013-01-16T11:25:01.813 に答える