Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php json文件中的简单数组插入_Php_Json_File - Fatal编程技术网

Php json文件中的简单数组插入

Php json文件中的简单数组插入,php,json,file,Php,Json,File,我有一个简单的json文件。这是结构 1人阵法,包含1场比赛和2场比赛阵法 我想将数据添加到匹配项[0]…第一个匹配项数组 我正在使用matchid属性,该属性必须存储在适当的匹配数组中 因此,如果我的matchid为4..我希望我的数据存储在匹配项[0][4]中。 我尝试了各种组合,但无法得到我想要的 这是我的json文件,后面是我尝试过的代码 { "players": [ { "name": "Moldova", "image": "/Images/M

我有一个简单的json文件。这是结构

1人阵法,包含1场比赛和2场比赛阵法

我想将数据添加到匹配项[0]…第一个匹配项数组

我正在使用matchid属性,该属性必须存储在适当的匹配数组中

因此,如果我的matchid为4..我希望我的数据存储在匹配项[0][4]中。 我尝试了各种组合,但无法得到我想要的

这是我的json文件,后面是我尝试过的代码

{
"players": [
    {
        "name": "Moldova",
        "image": "/Images/Moldova.jpg",
        "roll_over_image": "tank.jpg"
    },
    {
        "name": "Georgia",
        "image": "/Images/georgia.gif",
        "roll_over_image": "tank.jpg"
    },
    {
        "name": "Belarus",
        "image": "/Images/Belarus.gif",
        "roll_over_image": "tank.jpg"
    },
    {
        "name": "Armenia",
        "image": "/Images/armenia.png",
        "roll_over_image": "tank.jpg"
    },
    {
        "name": "Kazahstan",
        "image": "/Images/kazahstan.gif",
        "roll_over_image": "tank.jpg"
    },
    {
        "name": "Russia",
        "image": "/Images/russia.gif",
        "roll_over_image": "tank.jpg"
    },
    {
        "name": "Ukraine",
        "image": "/Images/ukraine.png",
        "roll_over_image": "tank.jpg"
    },
    {
        "name": "Uzbekistan",
        "image": "/Images/uzbekistan.gif",
        "roll_over_image": "tank.jpg"
    }
],
"games": [
    {
        "matches": [
            {
                "player1id": 0,
                "player2id": 1,
                "winner": "*"
            },
            {
                "player1id": 2,
                "player2id": 3,
                "winner": "*"
            },
            {
                "player1id": 4,
                "player2id": 5,
                "winner": "*"
            },
            {
                "player1id": 6,
                "player2id": 7,
                "winner": "*"
            },
            {
                "player1id": 0,
                "player2id": 2,
                "winner": "*"
            },
            {
                "player1id": 4,
                "player2id": 6,
                "winner": "*"
            },
            {
                "player1id": 0,
                "player2id": 4,
                "winner": 4
            }
        ]
    },
    {
        "matches": [
            {
                "player1id": 0,
                "player2id": 1,
                "winner": "*"
            },
            {
                "player1id": 2,
                "player2id": 3,
                "winner": "*"
            },
            {
                "player1id": 4,
                "player2id": 5,
                "winner": "*"
            },
            {
                "player1id": 6,
                "player2id": 7,
                "winner": "*"
            },
            {
                "player1id": 0,
                "player2id": 2,
                "winner": "*"
            },
            {
                "player1id": 4,
                "player2id": 6,
                "winner": "*"
            },
            {
                "player1id": 0,
                "player2id": 4,
                "winner": 0
            }
        ]
    }
]
                    $inp = file_get_contents('jsontrail.json');
        $tempArray = json_decode($inp, true);
        //adding to the matchid index of matches array
        $matchid=3;
        $arrne['winner'] ="winner";
        $arrne['player1id'] ="player1id";
        $arrne['player2id'] ="player2id";
        array_push($tempArray->games[0]->matches[0]->[$matchid], $arrne );
        $jsonData = json_encode($tempArray);
        file_put_contents('jsontrail.json', $jsonData);
        print_r( $inp);
} 还有我试过的php代码

{
"players": [
    {
        "name": "Moldova",
        "image": "/Images/Moldova.jpg",
        "roll_over_image": "tank.jpg"
    },
    {
        "name": "Georgia",
        "image": "/Images/georgia.gif",
        "roll_over_image": "tank.jpg"
    },
    {
        "name": "Belarus",
        "image": "/Images/Belarus.gif",
        "roll_over_image": "tank.jpg"
    },
    {
        "name": "Armenia",
        "image": "/Images/armenia.png",
        "roll_over_image": "tank.jpg"
    },
    {
        "name": "Kazahstan",
        "image": "/Images/kazahstan.gif",
        "roll_over_image": "tank.jpg"
    },
    {
        "name": "Russia",
        "image": "/Images/russia.gif",
        "roll_over_image": "tank.jpg"
    },
    {
        "name": "Ukraine",
        "image": "/Images/ukraine.png",
        "roll_over_image": "tank.jpg"
    },
    {
        "name": "Uzbekistan",
        "image": "/Images/uzbekistan.gif",
        "roll_over_image": "tank.jpg"
    }
],
"games": [
    {
        "matches": [
            {
                "player1id": 0,
                "player2id": 1,
                "winner": "*"
            },
            {
                "player1id": 2,
                "player2id": 3,
                "winner": "*"
            },
            {
                "player1id": 4,
                "player2id": 5,
                "winner": "*"
            },
            {
                "player1id": 6,
                "player2id": 7,
                "winner": "*"
            },
            {
                "player1id": 0,
                "player2id": 2,
                "winner": "*"
            },
            {
                "player1id": 4,
                "player2id": 6,
                "winner": "*"
            },
            {
                "player1id": 0,
                "player2id": 4,
                "winner": 4
            }
        ]
    },
    {
        "matches": [
            {
                "player1id": 0,
                "player2id": 1,
                "winner": "*"
            },
            {
                "player1id": 2,
                "player2id": 3,
                "winner": "*"
            },
            {
                "player1id": 4,
                "player2id": 5,
                "winner": "*"
            },
            {
                "player1id": 6,
                "player2id": 7,
                "winner": "*"
            },
            {
                "player1id": 0,
                "player2id": 2,
                "winner": "*"
            },
            {
                "player1id": 4,
                "player2id": 6,
                "winner": "*"
            },
            {
                "player1id": 0,
                "player2id": 4,
                "winner": 0
            }
        ]
    }
]
                    $inp = file_get_contents('jsontrail.json');
        $tempArray = json_decode($inp, true);
        //adding to the matchid index of matches array
        $matchid=3;
        $arrne['winner'] ="winner";
        $arrne['player1id'] ="player1id";
        $arrne['player2id'] ="player2id";
        array_push($tempArray->games[0]->matches[0]->[$matchid], $arrne );
        $jsonData = json_encode($tempArray);
        file_put_contents('jsontrail.json', $jsonData);
        print_r( $inp);
分析错误:语法错误,意外的“[”,应为T_字符串或T_变量或“{”或“$”,我现在遇到此错误

代码2尝试

                    $inp = file_get_contents('jsontrail.json');

        $tempArray = json_decode($inp, true);
        //adding to the matchid index of matches array
        $matchid=3;
        $arrne['games']['matches'][0][$matchid]['winner'] ="winner";
        $arrne['games']['matches'][0][$matchid]['player1id'] ="player1id";
        $arrne['games']['matches'][0][$matchid]['player2id'] ="player2id";
        array_push($tempArray,$arrne );
        $jsonData = json_encode($tempArray);
        file_put_contents('jsontrail.json', $jsonData);
        print_r( $inp);

但是这会将数组推到最后。

对于初学者来说,JSON无效,有一个额外的逗号。复制并粘贴JSON到,它会告诉您出了什么问题

然后试试这个代码

<?php
$arrne = json_decode(file_get_contents('jsontrail.json'),true);
$inp = file_get_contents('jsontrail.json');
$tempArray = json_decode($inp, true);

//adding to the matchid index of matches array
$matchid = 1;
$newmatch=array();
$newmatch['winner'] ="LOOKFORME";
$newmatch['player1id'] ="player1id";
$newmatch['player2id'] ="player2id";

array_splice($tempArray["games"][0]["matches"], $matchid, 0, array($newmatch));
$jsonData = json_encode($tempArray);
file_put_contents('jsontrail.out.json', $jsonData);

有几件事不对:

1) 最后一个匹配项上有一个逗号:

{
  "player1id":0,
  "player2id":4,
  "winner":0
},
至少对我来说,它破坏了
json\u解码
。我用来检查格式

2) 您得到错误
致命错误:当尝试访问
$tempArray['players']['games']['matches'][0]
时,无法使用std Class类型的对象作为array
-按照JSON的设置方式,您应该这样访问它:
$tempArray->games[0]->matches[$matchid]
。但是,我认为您可能需要首先重新查看JSON的结构

3) 您正在将$tempArray['players']['games']['matches'][0][/code>传递到
array\u push
。如果您只是指匹配中的第一个元素,请将
[]
省略。请查看

我建议您将脚本的每个单独的步骤都取出,并按顺序调试每个步骤。例如,首先加载JSON,然后将其转储到屏幕上。然后对其进行解码并将其转储到屏幕上。然后尝试访问其中的元素,并将其转储到屏幕上,依此类推


祝你好运!

你确定你没有错过
$
arrne=json_decode
前面的一个
$
吗?哦,我在发布我的代码时留下了这个。现在将进行编辑。@AndriusNaruševičius你知道吗。。需要帮助。。不,但我试图确保你的问题更具可读性。我一年前从php切换过来,没有工具来尝试你的答案代码:)得到答案的最好运气:)我想在Plays->games->matches->0->myinputmatchid中添加数据。知道我如何实现这一点吗?谢谢你的回复他们没有玩家->游戏->比赛->0->myinputmatchid,你的数据不是那样的结构。弗洛伊德..对不起,这是游戏->比赛->0->myinputmatchid..刚刚检查过..知道吗?我知道了吗建议用新代码编辑您的原始问题,以便我们可以正确地看到代码更改。