我有一个.json文件,其中包含该字段的玩家姓名,邮件地址,字段名称和分数。像这样:
{"0":{"name":"test","password":"test","mail":"test@test.test","test3":0,"test2":0},"1":{"...
我想在一个领域改变分数,但我不能。我试过这种方式:
$jsonn = file_get_contents('data/userdata.json');
$arrayy = json_decode($jsonn, true);
$field = $_SESSION['fieldname'];
$arrayy[$felhasznev][$palya] = $pontszam;
我也试过这个但没有帮助:
$jsonn = file_get_contents('data/userdata.json');
$arrayy = json_decode($jsonn, true);
$field = $_SESSION['fieldname'];
foreach ($arrayy as $key => $valuee){
if($valuee['name'] == $username){
$valuee[$field] = $score;
}
}
我是JSON的初学者,所以也许是微不足道的......
答案 0 :(得分:0)
(1)在你的样本json中,没有用双引号括起来的值(0)(解析错误!)。
(2)如果json没问题,第一个代码应该可以工作。
(3)在第二个代码中,你跳过了“id”标识符(如果json没问题)。
答案 1 :(得分:0)
函数json_decode将json文件解析为对象,你使用关联数组,要有一个关联数组,你必须将第二个参数传递为true,如:
<?php
$file = file_get_contents("file.json");
$players = json_decode($file, true);
$err = json_last_error();
if ($err != JSON_ERROR_NONE) {
print_r($err);
die("Error in json file :/");
}
var_dump($players);
foreach ($players as $key => $val) {
if ($players[$key]["name"] == "test") {
$players[$key]["test3"] = $players[$key]["test3"] + 1;
$players[$key]["test2"] = $players[$key]["test2"] + 1;
}
}
var_dump($players);
file_put_contents("new_file.json", json_encode($players));