我正在尝试迭代一个包含循环赛中不同玩家得分的数组。我想创建另一个数组,基本上是一个列出每个玩家及其总分的阶梯。
我的分数表如下:
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
请帮助:)
答案 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];