我有一个解析游戏日志文件的脚本(用于重放)。它包含游戏中的大部分动作,如动作,杀戮,死亡等。
我一直在使用这个脚本一段时间,但现在我正在使用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>
我无法弄清楚为什么它会给我通知,任何想法如何解决这个问题?