我的视频游戏中有一个用于街机风格排行榜的JavaScript对象数组。所以,JSON看起来像这样:
[
{"initials" : "JOE", "score": 20250},
{"initials" : "ACE", "score": 10010},
{"initials" : "YUP", "score": 5500}
]
在游戏结束时,我想将当前的排行榜数组从服务器上的文件读入JS,如果玩家成为排行榜,则修改数组并将其写回到排行榜文件中。
从概念上看很简单,但我花了大部分时间阅读PHP,AJAX,jQuery,而且由于我是这些技术的新手,我的脑袋旋转了一下,主要是因为我找到的例子是比我的情况要复杂得多。
如果JSON数组是文件中唯一的东西,那么从文件读取JSON数组到JavaScript然后再将其重新写回来的最简单方法是什么?我的托管服务运行PHP 5.5。
编辑: 在收集了一些反馈并阅读了更多内容之后,下面是我提出的内容,这有效。
// read leader board
function readLeaderboard() {
var scores = [];
// load json without caching
var nonCacheableURL = 'js/leaderboard.json?nocache=' + (new
Date()).getTime();
$.getJSON(nonCacheableURL, function(json) {
for (var i=0; i<json.length; i++) {
scores[i] = json[i];
}
});
return scores;
}
// save leader board
function saveLeaderboard(leaderboard) {
$.post('js/postLeaderboard.php', {json : JSON.stringify(leaderboard)},
function (data, textStatus, jqXHR){}
);
}
调用postLeaderboard.php:
<?php
file_put_contents("leaderboard.json", $_POST['json']);
?>
答案 0 :(得分:0)
在php中你可以按照以下几行:
读取JSON并从中获取一个Assoc Array:
$scores = (array)json_decode(file_get_contents('scores.json'));
将数组写入JSON文件:
file_put_contents('scores.json', json_encode($scores));
我希望这会有所帮助。
答案 1 :(得分:0)
我在PHP中最简单的方法就是做这样的事情:
// Get the Data
$data = file_get_contents("data.json");
// Decode the json in it and store it,
$decoded = json_decode($data);
// Manipulate the $decoded here...
// JSON encode the object - $decoded and store it in a variable
$modified = json_encode($decode);
// put it back in the file
/* if you want to append the data, uncomment this-
$prev = true;
*/
if(isset($prev) && $prev = true)
{
file_put_contents("data.json", $prev . $modified);
}
else{
file_put_contents("data.json", $modified);
}