0

私はしばらくの間、いくつかの「単純な」アルゴリズムに苦労していて、インターネット全体で答えを探した後、あきらめました.....悲しい、私は知っています。初めは英文法などでお詫びしたいと思いました。

このクエリに基づく:

    SELECT a。*、b。*
    meczeから
    JOINベットb
    ON a.mecz_id = b.mecz_id AND a.wynik!='NULL'

以下のような値を持つ配列「punkty」があります。

    [0]=>配列
        ((
            [mecz_id] => 1 // match_id
            [druzyna_1_id] => 1 // team_1_id
            [druzyna_2_id] => 2 // team_2_id
            [wynik] => 1:2//スコア-試合の
            [wynik_buk] =>2//ブックメーカースコア-試合の
            [bet_id] =>1//ユーザーはidを賭けます
            [user_id] =>1//ユーザーID:)
            [bet_wynik] => 3:2//ユーザーはスコアを賭けます
            [bet_wynik_buk] =>1//ユーザーのブックメーカーの賭けスコア
            [krol] =>マリオ・ゴメス(GER)
            [laczny] => 5pkt�Hiszpania(2 pkt)
            [punkty] =>0//ポイント-計算時にここに追加されます
        )。

    [1]=>配列
        ((
            [mecz_id] => 2
            [druzyna_1_id] => 3
            [druzyna_2_id] => 4
            [wynik] => 3:2
            [wynik_buk] => 1
            [bet_id] => 2
            [user_id] => 1
            [bet_wynik] => 3:2
            [bet_wynik_buk] => 1
            [krol] =>マリオ・ゴメス(GER)
            [laczny] => 5pkt�Hiszpania(2 pkt)
            [パンク]=>0
        )。

    [2]=>配列
        ((
            [mecz_id] => 3
            [druzyna_1_id] => 2
            [druzyna_2_id] => 4
            [wynik] => 1:1
            [wynik_buk] => 0
            [bet_id] => 3
            [user_id] => 1
            [bet_wynik] => 1:1
            [bet_wynik_buk] => 0
            [krol] =>マリオ・ゴメス(GER)
            [laczny] => 5pkt�Hiszpania(2 pkt)
            [パンク]=>0
        )。

    [3]=>配列
        ((
            [mecz_id] => 1
            [druzyna_1_id] => 1
            [druzyna_2_id] => 2
            [wynik] => 1:2
            [wynik_buk] => 2
            [bet_id] => 6
            [user_id] => 4
            [bet_wynik] => 3:1
            [bet_wynik_buk] => 1
            [krol] =>マリオ・ゴメス(GER)
            [laczny] => 5pkt�Hiszpania(2 pkt)
            [パンク]=>0
        )。

    [4]=>配列
        ((
            [mecz_id] => 2
            [druzyna_1_id] => 3
            [druzyna_2_id] => 4
            [wynik] => 3:2
            [wynik_buk] => 1
            [bet_id] => 7
            [user_id] => 4
            [bet_wynik] => 2:3
            [bet_wynik_buk] => 2
            [krol] =>マリオ・ゴメス(GER)
            [laczny] => 5pkt�Hiszpania(2 pkt)
            [パンク]=>0
        )。

    [5]=>配列
        ((
            [mecz_id] => 3
            [druzyna_1_id] => 2
            [druzyna_2_id] => 4
            [wynik] => 1:1
            [wynik_buk] => 0
            [bet_id] => 8
            [user_id] => 4
            [bet_wynik] => 0:0
            [bet_wynik_buk] => 0
            [krol] =>マリオ・ゴメス(GER)
            [laczny] => 5pkt�Hiszpania(2 pkt)
            [パンク]=>0
        )。

    [6]=>配列
        ((
            [mecz_id] => 1
            [druzyna_1_id] => 1
            [druzyna_2_id] => 2
            [wynik] => 1:2
            [wynik_buk] => 2
            [bet_id] => 9
            [user_id] => 5
            [bet_wynik] => 1:2
            [bet_wynik_buk] => 2
            [krol] =>マリオ・ゴメス(GER)
            [laczny] => 5pkt�Hiszpania(2 pkt)
            [パンク]=>0
        )。

    [7]=>配列
        ((
            [mecz_id] => 2
            [druzyna_1_id] => 3
            [druzyna_2_id] => 4
            [wynik] => 3:2
            [wynik_buk] => 1
            [bet_id] => 10
            [user_id] => 5
            [bet_wynik] => 3:3
            [bet_wynik_buk] => 0
            [krol] =>マリオ・ゴメス(GER)
            [laczny] => 5pkt�Hiszpania(2 pkt)
            [パンク]=>0
        )。

    [8]=>配列
        ((
            [mecz_id] => 3
            [druzyna_1_id] => 2
            [druzyna_2_id] => 4
            [wynik] => 1:1
            [wynik_buk] => 0
            [bet_id] => 11
            [user_id] => 5
            [bet_wynik] => 1:1
            [bet_wynik_buk] => 0
            [krol] =>マリオ・ゴメス(GER)
            [laczny] => 5pkt�Hiszpania(2 pkt)
            [パンク]=>0
        )。

上記の配列に基づいて、良いスコアと正確な結果を得るためにポイントを割り当て
ています。プレーヤーが正しいスコア(つまり1またはXまたは2)を持っている場合は1
ポイント、プレーヤーが正しい正確なスコア(つまり1:1または3:1など)

    foreach($ punkty as $ k => $ v){
        $ wbuk = $ v ['wynik_buk']; //ブックメーカーのスコアに一致
        $ bwbuk = $ v ['bet_wynik_buk']; //ユーザーのブックメーカーの賭けスコア
        $ w = $ v ['wynik']; //スコアを一致させる
        $ bw = $ v ['bet_wynik']; //ユーザーはスコアを賭けます

        if($ wbuk == $ bwbuk){
            if($ w == $ bw){
                $ pkt = 4;
            }そうしないと{
                $ pkt = 1;
            }
        } そうしないと {
            $ pkt = 0;
        }
    }

上記のコードはポイントを正しく割り当てていますが、別のものを追加したいと思います。

1人のユーザーだけがこのスコア/結果を持っている場合、正しいスコアまたは正しい正確な結果を達成するためのボーナスポイントを追加したい:ユーザーが正しいスコア(つまり1またはXまたは2)を持つ唯一
のユーザーである場合は2ポイント ユーザーが正確な結果が得られる唯一のもの(つまり、3:1または1:1など)

助けてください !!!私はそれを行うには何千もの方法があるはずだと知っていますが、私の心はStackOverflow状態にあり、クラッシュしました:)

4

1 に答える 1

0

変数を理解できないので答えを出すのは難しいですが、あなたが何をしたいのか理解していると思います。

ユーザーが正確なスコアまたは正確な結果を持つ唯一のユーザーであるかどうかを判断するには、いくつかのオプションがあります (いくつかありますが、可能な限り単純にします)。各ループでクエリを実行して、ユーザーが正しいかどうかを確認します。正しい値を持つ唯一のものか、in_array 関数を使用する関数を記述します。

in_array() と多次元配列

編集:

または、このループに入る前に、クエリを実行して「スコア」配列を作成し、それを操作します。

于 2012-05-15T12:57:44.047 に答える