4个元素的数组中未定义的偏移量3

时间:2014-02-19 17:28:31

标签: php multidimensional-array

过去几天我一直在使用Steam api和PHP,一切都很好,直到我开始收到奇怪的偏移错误并在我的数组中重复值。我尝试将代码分解为没有api调用和html的版本,但仍然收到相同的未知错误。

我知道键值与数组元素1相同(所以我可以使用array_key_exists())。我喜欢将单个数组中的所有元素打印到html。该计划的目标是快速积累在json中检索的数据。

  

PHP注意:未定义的偏移量:在第54行的... / test.php中为3   AKA这一行 - >游戏[$ gameId] [3] + = 1

 $games=array();
 $i=10;
 while($i>0){
     $i--;
     $playtime = rand(1,1500);
     $twpt = rand(1,300);
     $gameId = rand(5,15);

     // clearly 4 elements in the array to use
     $newEntry = array($gameId, $playtime, $twpt, 1);

     if(array_key_exists($gameId, $games)){
         $games[$gameId] = array(
             //$games[$gameId][0] will not change
             $games[$gameId][1] += $newEntry[1],
             $games[$gameId][2] += $newEntry[2],
             $games[$gameId][3] += 1
         );
     } else {
         $games[$gameId] = $newEntry;
     }
 }

1 个答案:

答案 0 :(得分:1)

问题在于您“更新”(重新设置)$games[$gameId][3]

$games[$gameId] = array(
    //$games[$gameId][0] will not change
    $games[$gameId][1] += $newEntry[1],
    $games[$gameId][2] += $newEntry[2],
    $games[$gameId][3] += 1
);

您正在创建一个 new 数组,并且只添加了3个元素。您需要将$games[$gameId][0]添加到新数组中,以便它有4个元素。

$games[$gameId] = array(
    $games[$gameId][0],
    $games[$gameId][1] += $newEntry[1],
    $games[$gameId][2] += $newEntry[2],
    $games[$gameId][3] += 1
);

或者,不是每次都创建一个新数组,只需执行:

if(array_key_exists($gameId, $games)){
    $games[$gameId][1] += $newEntry[1];
    $games[$gameId][2] += $newEntry[2];
    $games[$gameId][3] += 1;
}
else {
     $games[$gameId] = $newEntry;
}