0

I just want to put the data into json file..

This is my code

    $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);

It is adding to the json file.. But it is adding to the last end..

  {"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":"*"}]}]}

But after adding,This is how the file is,at the last..

{"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"}}]}

Any help will be of great use to me..Thanks a lot in advance!!

user2234992
  • 543
  • 4
  • 8
  • 20

1 Answers1

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

I think you will need to make some checks before execute it, like: check if file exists.

  • Thanks for replying!! So i need to put these in between??$arrne['matches']['player1id']="player1"; $arrne['matches']['player2id']="player2"; $arrne['matches']['winner']="winner"; array_push( $tempArray['games'], $arrne ); $jsonData = json_encode($tempArray); – user2234992 Apr 24 '13 at 13:08
  • @I Am Not Procrastinating Thanks a lot...Even when I use php variable,I must use single/double quotes to enclose it? – user2234992 Apr 24 '13 at 13:16
  • http://stackoverflow.com/questions/3446216/what-is-the-difference-between-single-quoted-and-double-quoted-strings-in-php – Wesley Schleumer de Góes Apr 24 '13 at 13:17
  • but still it is not working as I needed..Am getting these at the end now....arr1":[],"matches":[{"player1id":"player1","player2id":"player2","winner":"winner"}]} – user2234992 Apr 24 '13 at 13:18
  • 1
    @I Am Not Procrastinating let us [continue this discussion in chat](http://chat.stackoverflow.com/rooms/28815/discussion-between-user2234992-and-i-am-not-procrastinating) – user2234992 Apr 24 '13 at 13:21