0

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

我使用这个脚本已经有一段时间了,但现在我正在使用 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

我不明白为什么它会给我这个通知,有什么想法可以解决这个问题吗?

4

0 回答 0