我目前正在尝试处理一个以 JSON 格式存储游戏信息的相对较大的日志文件。任何日志文件的平均范围为 2000-5000 行。
来自日志文件的示例输出(保留格式...),注意:为了他自己的隐私,我删除了玩家姓名、SteamID 和 IP 地址:
{"timestamp": "2012-09-16 14:10:36", "event": "log_start", "unixTime": 1347768636}
{"timestamp": "2012-09-16 14:10:36", "event": "player_status", "player": {"name": "PLAYER NICKNAME", "userId": 15, "uniqueId": "STEAM_X:X:XXXXXXX (STEAMID)", "team": 1}, "address": "xxx.xxx.xxx.xxx (IP)", "country": "AU"}
{"timestamp": "2012-09-16 14:10:36", "event": "live_on_3", "map": "de_mirage_csgo", "teams": [{"name": "Terrorists", "team": 2}, {"name": "Counter-Terrorists", "team": 3}], "status": 5, "version": "1.0.0 Beta"}
这就是问题的开始。日志文件的每一行都有效地定义了一个新的 JSON 对象?我正在尝试逐行解码所有这些对象(将它们存储为关联数组),(json_decode($string,TRUE)
然后我尝试通过循环将它们合并到一个 PHP 数组中。这确实“有效”(在某种意义上没有视觉错误),但 array_merge 不会产生任何接近我预期结果的东西。这是我的代码:
/* parse the logfile into array */
for ($i = 0; $i < $lineCount; $i++) {
if ($i === 0) { // first iteration
$arrLog = json_decode($line[$i],true);
} else {
$arrTempLog = json_decode($line[$i],true); // create temp array to store each line
$arrLog = array_merge($arrLog, $arrTempLog); // merge temp array w/ main array
}
}
任何能引导我朝着正确方向实现我需要的建议或意见将不胜感激!
谢谢