简单的数组插入json文件
我有一个简单的json文件。这是结构。简单的数组插入json文件
有1个游戏和2个匹配数组的1个玩家阵列。
我想添加数据匹配[0] ..第一匹配数组。
我使用的匹配属性必须存储在适当的匹配数组中。
所以,如果我的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
}
]
}
]
} 和我试过的php代码。
$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_STRING或T_VARIABLE或 '{' 或 '$' 我得到这个错误现在..
码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到http://jsonlint.com,它会告诉你什么是错的。
并尝试这个代码
<?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);
哦,好吧..将尽力..谢谢replyin .. – user2234992 2013-04-25 06:46:10
我做到了..如果你告诉我如何将数据添加到阵列我wnat .. – user2234992 2013-04-25 06:48:08
我想添加数据在playes-> games-> matches-> 0-> myinputmatchid ..任何想法如何我可以实现这一目标? ?再次感谢您的回复 – user2234992 2013-04-25 06:50:45
有几件事情错了:
1)是在最后一场比赛逗号:
{
"player1id":0,
"player2id":4,
"winner":0
},
其中,至少对我来说,打破了json_decode
。我使用this site来检查格式。
2)当您尝试访问$tempArray['players']['games']['matches'][0]
时出现错误Fatal error: Cannot use object of type std Class as array
- 您的JSON设置方式,您应该像这样访问它:$tempArray->games[0]->matches[$matchid]
。不过,我认为你可能需要先看看你的JSON的结构。
3)您正在将`$tempArray['players']['games']['matches'][0][]
传递到array_push
。如果你只是意味着比赛中的第一个元素,那就离开[]
。检查出documentation here。
我建议你拿出脚本的每个单独步骤并按顺序调试每一个脚本。例如,首先加载JSON,然后将其转储到屏幕上。然后解码并将其转储到屏幕上。然后尝试访问其中的元素,并将其转储到屏幕上,依此类推等等。
祝你好运!
如果你能告诉我如何根据我的inputmatch id来添加它。 – user2234992 2013-04-25 07:04:26
我建议用新代码编辑你的原始问题,这样我们就可以正确地看到代码的变化。 – LeonardChallis 2013-04-25 07:47:27
更新了两个代码..请看一看 – user2234992 2013-04-25 08:51:03
你确定你没有错过'arrne = json_decode'前面的'$'吗? – 2013-04-25 05:54:42
哦,我离开时发布我的代码..现在编辑.. – user2234992 2013-04-25 05:56:16
@AndriusNaruševičius你有任何想法..需要帮助.. – user2234992 2013-04-25 06:06:51