无法更改json

时间:2016-05-05 22:48:08

标签: php json

我有一个.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的初学者,所以也许是微不足道的......

2 个答案:

答案 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));