PHP多维数组值检查

时间:2012-05-15 12:38:47

标签: php arrays

我正在努力使用一些“简单”算法一段时间后,在搜索整个互联网后我放弃了答案.....很伤心,我知道。一开始我想为我的英语语法等道歉。

基于此查询:


    SELECT a.*, b.*
    FROM mecze a
    JOIN bets b
    ON a.mecz_id = b.mecz_id AND a.wynik != 'NULL'

我有一个数组“punkty”,其值如下:

    [0] => Array
        (
            [mecz_id] => 1           //match_id
            [druzyna_1_id] => 1      //team_1_id
            [druzyna_2_id] => 2      //team_2_id
            [wynik] => 1:2           //score - of the match
            [wynik_buk] => 2         //bookie score - of the match
            [bet_id] => 1            //users bet id
            [user_id] => 1           //user id :)
            [bet_wynik] => 3:2       //users bet score
            [bet_wynik_buk] => 1     //users bookie bet score
            [krol] => Mario Gomez (GER)
            [laczny] => 5 pkt � Hiszpania ( 2 pkt )
            [punkty] => 0            //points - here will be added when calculated
        )

    [1] => Array
        (
            [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] => Mario Gomez (GER)
            [laczny] => 5 pkt � Hiszpania ( 2 pkt )
            [punkty] => 0
        )

    [2] => Array
        (
            [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] => Mario Gomez (GER)
            [laczny] => 5 pkt � Hiszpania ( 2 pkt )
            [punkty] => 0
        )

    [3] => Array
        (
            [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] => Mario Gomez (GER)
            [laczny] => 5 pkt � Hiszpania ( 2 pkt )
            [punkty] => 0
        )

    [4] => Array
        (
            [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] => Mario Gomez (GER)
            [laczny] => 5 pkt � Hiszpania ( 2 pkt )
            [punkty] => 0
        )

    [5] => Array
        (
            [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] => Mario Gomez (GER)
            [laczny] => 5 pkt � Hiszpania ( 2 pkt )
            [punkty] => 0
        )

    [6] => Array
        (
            [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] => Mario Gomez (GER)
            [laczny] => 5 pkt � Hiszpania ( 2 pkt )
            [punkty] => 0
        )

    [7] => Array
        (
            [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] => Mario Gomez (GER)
            [laczny] => 5 pkt � Hiszpania ( 2 pkt )
            [punkty] => 0
        )

    [8] => Array
        (
            [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] => Mario Gomez (GER)
            [laczny] => 5 pkt � Hiszpania ( 2 pkt )
            [punkty] => 0
        )

根据上面的数组,我指定得分和准确结果的分数:
当玩家得分正确(即1或X或2)时1分 当玩家具有正确的准确分数(即1:1或3:1等)时的4分。


    foreach ( $punkty as $k => $v ){
        $wbuk = $v['wynik_buk'];         //match bookie score
        $bwbuk = $v['bet_wynik_buk'];    //users bookie bet score
        $w = $v['wynik'];                //match score
        $bw = $v['bet_wynik'];           //users bet score

        if( $wbuk == $bwbuk ) {
            if ( $w == $bw ) {
                $pkt = 4;
            }else{ 
                $pkt = 1; 
            }
        } else {
            $pkt = 0;
        }
    }

上面的代码正确地指定了点,但我想为它添加另一个东西。

如果只有一个用户具有此分数/结果,我想添加一些奖励积分以获得正确的分数或正确的结果:
如果用户是具有正确分数的仅一个(即1或X或2),则为2分 如果用户是只有一个并且具有正确的结果(即3:1或1:1等),则为1分

请帮忙!!!我知道必须有数千种方法才能做到,但我的思维处于StackOverflow状态并崩溃了:)

1 个答案:

答案 0 :(得分:0)

由于我无法理解变量,但我觉得我很明白你想做什么,这很难给出答案。

要判断用户是否是唯一一个具有确切分数或确切结果的用户,您有几个选项(少数但保持尽可能简单),请在每个循环上运行查询以查看是否用户是唯一具有正确值的用户或编写使用in_array函数的函数:

in_array() and multidimensional array

编辑:

或者在进入此循环之前,运行查询并创建一个“得分”数组并对其进行操作。