我使用带键的数组作为数组的键,在下面的代码中
$team = array();
$counter = 0;
$sql = "SELECT Home, Away, Result, Points FROM schedule";
$schedulequery = mysqli_query($conn, $sql);
// divy out the points
if (mysqli_num_rows($schedulequery) > 0) {
while($teamrow = mysqli_fetch_assoc($schedulequery)) {
$points = $teamrow["Points"];
if ($teamrow["Result"] == "Home"){
$team[$teamrow["Home"]] = $team[$teamrow["Home"]] + $points;
}
if ($teamrow["Result"] == "Tie"){
$team[$teamrow["Home"]] = $team[$teamrow["Home"]] + ($points/2);
$team[$teamrow["Away"]] = $team[$teamrow["Away"]] + ($points/2);
}
if ($teamrow["Result"] == "Away"){
$team[$teamrow["Away"]] = $team[$teamrow["Away"]] + $points;
}
if ($teamrow["Result"] == "HomeForfeit"){
$team[$teamrow["Home"]] = $team[$teamrow["Home"]] - $points;
$team[$teamrow["Away"]] = $team[$teamrow["Away"]] + $points;
}
if ($teamrow["Result"] == "AwayForfeit"){
$team[$teamrow["Home"]] = $team[$teamrow["Home"]] + $points;
$team[$teamrow["Away"]] = $team[$teamrow["Away"]] - ($points/2);
}
if ($teamrow["Result"] == "DuelForfeit"){
$team[$teamrow["Home"]] = $team[$teamrow["Home"]] - ($points/2);
$team[$teamrow["Away"]] = $team[$teamrow["Away"]] - ($points/2);
}
}
}
每次使用其中一行时,此代码在我的MySql表中工作并成功更新(代码中未包含的部分)我得到了一个" PHP注意:未定义的索引:"错误。
这是不好的做法还是错误的语法?我很困惑为什么它工作,但仍然告诉我未定义的索引。
编辑: 错误输出的行是我访问具有双数组的行的所有时间,例如" $ team [$ teamrow [" Home"]]"。任何时候访问其中一个我得到一个错误。
编辑:我想我明白了......我正在创建一个不存在的数组中的新密钥?答案 0 :(得分:0)
答案:我在一个尚不存在的关联数组中创建了一个新索引。这里没有错误代码:
$ team = array(); $ counter = 0;
$sql = "SELECT Home, Away, Result, Points FROM schedule";
$schedulequery = mysqli_query($conn, $sql);
// divy out the points
if (mysqli_num_rows($schedulequery) > 0) {
while($teamrow = mysqli_fetch_assoc($schedulequery)) {
$points = $teamrow["Points"];
if ($teamrow["Result"] == "Home"){
if (!isset($team[$teamrow["Home"]])){
$team[$teamrow["Home"]] = 0;
}
$team[$teamrow["Home"]] = $team[$teamrow["Home"]] + $points;
}
if ($teamrow["Result"] == "Tie"){
if (!isset($team[$teamrow["Home"]])){
$team[$teamrow["Home"]] = 0;
}
if (!isset($team[$teamrow["Away"]])){
$team[$teamrow["Away"]] = 0;
}
$team[$teamrow["Home"]] = $team[$teamrow["Home"]] + ($points/2);
$team[$teamrow["Away"]] = $team[$teamrow["Away"]] + ($points/2);
}
if ($teamrow["Result"] == "Away"){
if (!isset($team[$teamrow["Away"]])){
$team[$teamrow["Away"]] = 0;
}
$team[$teamrow["Away"]] = $team[$teamrow["Away"]] + $points;
}
if ($teamrow["Result"] == "HomeForfeit"){
if (!isset($team[$teamrow["Home"]])){
$team[$teamrow["Home"]] = 0;
}
if (!isset($team[$teamrow["Away"]])){
$team[$teamrow["Away"]] = 0;
}
$team[$teamrow["Home"]] = $team[$teamrow["Home"]] - $points;
$team[$teamrow["Away"]] = $team[$teamrow["Away"]] + $points;
}
if ($teamrow["Result"] == "AwayForfeit"){
if (!isset($team[$teamrow["Home"]])){
$team[$teamrow["Home"]] = 0;
}
if (!isset($team[$teamrow["Away"]])){
$team[$teamrow["Away"]] = 0;
}
$team[$teamrow["Home"]] = $team[$teamrow["Home"]] + $points;
$team[$teamrow["Away"]] = $team[$teamrow["Away"]] - ($points/2);
}
if ($teamrow["Result"] == "DuelForfeit"){
if (!isset($team[$teamrow["Home"]])){
$team[$teamrow["Home"]] = 0;
}
if (!isset($team[$teamrow["Away"]])){
$team[$teamrow["Away"]] = 0;
}
$team[$teamrow["Home"]] = $team[$teamrow["Home"]] - ($points/2);
$team[$teamrow["Away"]] = $team[$teamrow["Away"]] - ($points/2);
}
}
}
答案 1 :(得分:0)
从我能说出的问题可能是像$team[$teamrow["Home"]] = $team[$teamrow["Home"]] + $points;
这样的行。
在代码的开头,您将$team
初始化为没有索引或值的空数组。然后在你的while循环中你有像$team[$teamrow["Home"]] = $team[$teamrow["Home"]] + $points;
这样的行,问题是=
的右边。 $team[$teamrow["Home"]]
的值在第一次迭代中被添加到$points
(当$ team被称为空数组时)?
因为看起来你正在使用整数,所以在你的while循环开始时我将执行以下操作
if(!isset($team[$teamrow["Home"]]))
{
$team[$teamrow["Home"]] = 0;
}
同样我也会对$team[$teamrow["Away"]]
做同样的事情。这样,如果$team[$teamrow["Home"]]
未定义,则它将被赋予值0