通过2D数组迭代,在php中添加分数

时间:2014-02-09 14:34:17

标签: php arrays iterator

我正在尝试迭代一个包含循环赛中不同玩家得分的数组。我想创建另一个数组,基本上是一个列出每个玩家及其总分的阶梯。

我的分数表如下:

    id  Home    Home    Away    Away
        _Name   _Score  _Name   _Score
    -----------------------------------
    1   Mark    NULL    Darren  NULL
    2   Andrea  2       Greg    7
    3   Claire  2       Test 6  3
    4   Mark    NULL    Andrea  NULL
    5   Claire  NULL    Darren  NULL
    6   Test 6  NULL    Greg    NULL
    7   Mark    NULL    Claire  NULL
    8   Test 6  NULL    Andrea  NULL
    9   Greg    NULL    Darren  NULL
    10  Mark    NULL    Test 6  NULL
    11  Greg    NULL    Claire  NULL
    12  Darren  NULL    Andrea  NULL
    13  Mark    NULL    Greg    NULL
    14  Darren  NULL    Test 6  NULL
    15  Andrea  NULL    Claire  NULL

我可以很好地将它变成一个名为$ rows的15 x 5数组。我还可以将所有不同的玩家名称变成一个名为$ names的漂亮的6 x 1数组。我希望迭代$ name,在主场或客场球员等于名字值时加上主分数或客场得分的值,从而计算他们的总得分。

我的代码如下:

<?php 
for ($i=0; $i<count($names); $i++) {
    print($names[$i]);
    echo " - ";
    $score = 0;
    for ($j=0;$j<count($rows);$j++) {
        if ($rows[$j][1] = $names[$i]) {
            $score = $score + $rows[$j][2];
        }
        if ($rows[$j][3] = $names[$i]) {
            $score = $score + $rows[$j][4];
        }

    }
    print($score);

    echo "<br><br>";
}
?>

而不是让Andrea和Claire在2,Greg在7,测试6在3和其他所有人在0我得到以下:

    Mark - 14

    Andrea - 14

    Claire - 14

    Darren - 14

    Greg - 14

    Test 6 - 14

请帮助:)

3 个答案:

答案 0 :(得分:1)

您忘记使用==代替=进行相等性检查。您应该将错误报告设置为E_ALL | E_NOTICE,以便即使这些错误也会作为通知进行报告。虽然它是有效的代码,但它可能不是您打算做的。

答案 1 :(得分:1)

比较两个值时需要使用双“=”。如果你只使用一个它总是返回true

    if ($rows[$j][1] == $names[$i]) {
        $score = $score + $rows[$j][2];
    }
    if ($rows[$j][3] == $names[$i]) {
        $score = $score + $rows[$j][4];
    }

答案 2 :(得分:1)

if ($rows[$j][1] = $names[$i])

您必须使用==进行检查

$score = $score + $rows[$j][2];

那将是:

$score += $rows[$j][2];