数组中未定义的偏移量,但应设置

时间:2012-08-12 22:03:20

标签: php arrays

我有一个解析游戏日志文件的脚本(用于重放)。它包含游戏中的大部分动作,如动作,杀戮,死亡等。

我一直在使用这个脚本一段时间,但现在我正在使用Codeigniter处理统计网站,我收到了很多错误通知,我不知道为什么。

确切错误为Message: Undefined offset: 3

它所引用的行是团队案例中包含$ message [3]的行。

这是脚本:

$f = fopen($full_path,"r");
    while ($line = fgets($f))
    {
        $line = str_replace("ööööö", " ",trim($line));  // these characters are found in win replay files
        $line = str_replace("ššššš", " ", $line);  // these characters are found in mac replay files
        $message = explode(" ",$line);
        $lasttimestamp = $message[sizeof($message)-1];
        if ($message[0]=="PLAYERSENT" || $message[0]=="TCPSENT")
        {
            array_shift($message);
            $swapfield = $message[0];
            $message[0] = $message[1];
            $message[1] = $swapfield;

        }
        switch ($message[0])
        {

        case "team":    // team (player id) (team)
            $name = $names[$message[1]];
            if ($message[2]>-1) $players[$name]['Played'] = true;

            $players[$name]['Sessions'][] = array("Team"=>$players[$name]['Team'],"TimeSpent"=>($message[3]-$players[$name]['LastTimeStamp']));
            if ($players[$name]['Team']>-1) $players[$name]['TotalTime'] += $message[3]-$players[$name]['LastTimeStamp'];
            $players[$name]['Team'] = $message[2];
            $players[$name]['LastTimeStamp'] = $message[3];
            break;
        default:
        }
    }
fclose($f);

案例匹配如下所示的行:

team 4 -1ööööö57167168

如脚本中所示,ööööö字符被替换为空格,因此它应该变为team 4 -1 57167168,因此$ message [3]应该显示时间戳57167168 < / p>

我无法弄清楚为什么它会给我通知,任何想法如何解决这个问题?

0 个答案:

没有答案