2013-04-24 117 views
0

我只想把数据转换成JSON文件..访问在JSON文件二维数组

这是我的代码

$inp = file_get_contents('7players.json'); 
    $tempArray = json_decode($inp, true); 
    $arrne['matches']['player1id']="player1"; 
    $arrne['matches']['player2id']="player2"; 
    $arrne['matches']['winner']="winner"; 
    array_push($tempArray['games'], $arrne); 
    $jsonData = json_encode($tempArray); 
    file_put_contents('7players.json', $jsonData); 
    print_r($inp); 

它增加了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"},{"name":"nisha5"},{"name":"nisha1"}], 

"games":[{"matches":[{"player1id":"*","player2id":"*","winner":"*"}, {"player1id":"*","player2id":"*","winner":"*"},{"player1id":"*","player2id":"*","winner":"*"},{"player1id":"*","player2id":7,"winner":"*"},{"player1id":"*","player2id":"*","winner":"*"},{"player1id":"*","player2id":"*","winner":"*"},{"player1id":"*","player2id":"*","winner":"*"}]}, 

{"matches":[{"player1id":"*","player2id":"*","winner":"*"},{"player1id":"*","player2id":"*","winner":"*"},{"player1id":"*","player2id":"*","winner":"*"},{"player1id":"*","player2id":7,"winner":"*"},{"player1id":"*","player2id":"*","winner":"*"},{"player1id":"*","player2id":"*","winner":"*"},{"player1id":"*","player2id":"*","winner":"*"}]}]} 

但加入之后,这个文件是如何,在最后..

{"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"},{"name":"nisha5"},{"name":"nisha1"}], 

"games":[{"matches":[{"player1id":"*","player2id":"*","winner":"*"},{"player1id":"*","player2id":"*","winner":"*"},{"player1id":"*","player2id":"*","winner":"*"},{"player1id":"*","player2id":7,"winner":"*"},{"player1id":"*","player2id":"*","winner":"*"},{"player1id":"*","player2id":"*","winner":"*"},{"player1id":"*","player2id":"*","winner":"*"}]}, 

{"matches":[{"player1id":"*","player2id":"*","winner":"*"},{"player1id":"*","player2id":"*","winner":"*"},{"player1id":"*","player2id":"*","winner":"*"},{"player1id":"*","player2id":7,"winner":"*"},{"player1id":"*","player2id":"*","winner":"*"},{"player1id":"*","player2id":"*","winner":"*"},{"player1id":"*","player2id":"*","winner":"*"}]}, 

{"matches":{"player1id":"player1","player2id":"player2","winner":"winner"}},{"matches":{"player1id":"player1","player2id":"player2","winner":"winner"}},{"matches":{"player1id":"player1","player2id":"player2","winner":"winner"}}]} 

任何帮助将对我很有用...预先感谢了很多!

+0

因为'array_push'把它放在最后! – Waygood 2013-04-24 13:08:58

+0

如果您尝试file_put_contents('7players.json','RANDOM_DATA');它是附加到文件还是被覆盖? – silkfire 2013-04-24 13:09:09

+0

如果文件名不存在,则创建该文件。否则,现有文件将被覆盖,除非设置了FILE_APPEND标志。 – Waygood 2013-04-24 13:09:40

回答

2
/* last argument says for decode JSON as array */ 
$gameToUpdate = 0; 
$arrne = json_decode(file_get_contents('7players.json'), true); 
/* play with your JSON here */ 
/* lets suppose that there's lots of matches */ 
$matchToPrepend = array(
    'player1id' => "player1", 
    'player2id' => "player2", 
    'winner' => "winner" 
); 
/* this will prepend data to array */ 
array_unshift($arrne['matches']['games'][$gameToUpdate], $matchToPrepend); 
/* save your JSON */ 
file_put_contents('7players.json', json_encode($arrne)); 

file_put_contents

file_get_contents

array_unshift

json_encode

json_decode

我想你会需要在执行之前进行一些检查,如:检查文件是否存在。

+0

感谢您的回复!所以我需要把这些放在两者之间?? $ arrne ['matches'] ['player1id'] =“player1”; $ arrne ['matches'] ['player2id'] =“player2”; $ arrne ['matches'] ['winner'] =“赢家”; array_push($ tempArray ['games'],$ arrne); $ jsonData = json_encode($ tempArray); – user2234992 2013-04-24 13:08:56

+0

我会根据您的需要更新答案 – 2013-04-24 13:10:13

+0

现在编辑它:P – 2013-04-24 13:14:27