【问题标题】:php - making calculations depending on game scorephp - 根据游戏分数进行计算
【发布时间】:2019-03-02 06:58:41
【问题描述】:

所以我想根据比赛的得分进行一些计算。我的代码做了我想做的事,但感觉不对,感觉应该有更好的方法来做到这一点。

数组键中的分数已经是我对 ^ 有疑问的东西,然后我将每个可能的分数硬编码到 10-10,这看起来也不是很有效和快速。

$score['0-0'] = someFunction($homeExp,0) * someFunction($awayExp,0) / 100; //10%
$score['0-1'] = someFunction($homeExp,0) * someFunction($awayExp,1) / 100; //10%
$score['0-2'] = someFunction($homeExp,0) * someFunction($awayExp,2) / 100; //etc..
$score['0-3'] = someFunction($homeExp,0) * someFunction($awayExp,3) / 100; //etc..
$score['0-4'] = someFunction($homeExp,0) * someFunction($awayExp,4) / 100;
$score['1-0'] = someFunction($homeExp,1) * someFunction($awayExp,0) / 100; //10%
$score['1-1'] = someFunction($homeExp,1) * someFunction($awayExp,1) / 100;
$score['1-2'] = someFunction($homeExp,1) * someFunction($awayExp,2) / 100;
$score['1-3'] = someFunction($homeExp,1) * someFunction($awayExp,3) / 100;
$score['1-4'] = someFunction($homeExp,1) * someFunction($awayExp,4) / 100;
$score['2-0'] = someFunction($homeExp,2) * someFunction($awayExp,0) / 100;
$score['2-1'] = someFunction($homeExp,2) * someFunction($awayExp,1) / 100;
$score['2-2'] = someFunction($homeExp,2) * someFunction($awayExp,2) / 100;
$score['2-3'] = someFunction($homeExp,2) * someFunction($awayExp,3) / 100;
$score['2-4'] = someFunction($homeExp,2) * someFunction($awayExp,4) / 100;
$score['3-0'] = someFunction($homeExp,3) * someFunction($awayExp,0) / 100;
$score['3-1'] = someFunction($homeExp,3) * someFunction($awayExp,1) / 100;
$score['3-2'] = someFunction($homeExp,3) * someFunction($awayExp,2) / 100;
$score['3-3'] = someFunction($homeExp,3) * someFunction($awayExp,3) / 100;
$score['3-4'] = someFunction($homeExp,3) * someFunction($awayExp,4) / 100;
$score['4-0'] = someFunction($homeExp,4) * someFunction($awayExp,0) / 100;
$score['4-1'] = someFunction($homeExp,4) * someFunction($awayExp,1) / 100;
$score['4-2'] = someFunction($homeExp,4) * someFunction($awayExp,2) / 100;
$score['4-3'] = someFunction($homeExp,4) * someFunction($awayExp,3) / 100;
$score['4-4'] = someFunction($homeExp,4) * someFunction($awayExp,4) / 100;
//up till about 10-10 

//all scores under 2 goals
$value = $score['0-0'] + $score['0-1'] + $score['1-0']; //30%

//all scores under 3 goals
$value = $score['0-0'] + $score['0-1'] + $score['0-2'] + $score['1-0'] + $score['1-1'] + $score['2-0']; //xx%

//all scores where home wins
$value = $score['1-0'] + $score['2-0'] ... etc etc ;

这是要走的路吗?还是我应该研究一种不同的方法?

【问题讨论】:

  • 如果您的代码有效,但您希望对其进行审查/优化,那么 CodeReview 是发布的好地方。
  • 将结果拆分为两个变量(主场和客场)并参数化您的函数。您将避免所有那些糟糕的代码
  • @mickmackusa 他可能不知道,所以这里是codereview.stackexchange.com的链接
  • 请用您在每个代码块中执行的任务注释您的代码
  • 坦率地说,这看起来很可怕。为什么不直接将两个分数作为参数传递给someFunction()?另外,最好有一些exception handling,因为一个团队的得分可以超过 10 个目标,并且您的数组下标将变成烟花表演。

标签: php arrays


【解决方案1】:

你可以像这样使用两个循环:

for ($i = 0; $i <= 10; $i++) {
    for ($j = 0; $j <= 10; $j++) {
        $score[$i . '-' . $j] = someFunction($homeExp,$i) * someFunction($awayExp,$j) / 100;
    }
}

但是您真正应该问自己的问题是:您真的需要计算所有这些并将其放入数组中吗?如果真的需要,$score[4][3] 形式的数组不是更好吗?

【讨论】:

  • 嗨,费尔斯,我不确定我是否必须...不要这么认为。你会怎么做?或者你能给我一些建议,让我自己弄清楚应该读什么。顺便说一句,您的代码可以工作 :) 谢谢!
  • 对于数组:而不是使用 $score[$i 。 '-' 。 $j],可以使用二维数组:$score[$i][$j] = someFunction($homeExp,$i) * someFunction($awayExp,$j) / 100;然后阅读它,你可以使用类似 $test = $score[0][2];
猜你喜欢
  • 2011-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-09
  • 1970-01-01
  • 1970-01-01
  • 2020-12-19
  • 2017-12-02
相关资源
最近更新 更多