как добавить элемент в форматированный файл json-файла

Я использую только 1 данные для вставки в свой json-файл.

$data=$_POST['myusernamer']; $inp = file_get_contents('7players.json'); $tempArray = json_decode($inp); array_push($tempArray, $data); $jsonData = json_encode($tempArray); file_put_contents('7players.json', $jsonData); 

Так выглядит мой json-файл. Я просто хочу добавить 1 игрока в конце.

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

Мой вопрос: как добавить игрока в конец? И я также хотел бы знать, как обновлять

 player1id":"*", "player2id":"*", "winner":" 

в массиве совпадений.

Просто расшифруйте строку json, а затем используйте push массива

 $tempArray = json_decode($jsonstring, true); array_push($tempArray, $your_data); 

Для вашего случая

  $str = '{ "players":[ { "name":"Moldova", "image":"/Images/Moldova.jpg", "roll_over_image":"tank.jpg" }, { "name":"Georgia", "image":"/Images/georgia.gif", "roll_over_image":"tank.jpg" } ]}'; $arr = json_decode($str, true); $arrne['name'] = "dsds"; array_push( $arr['players'], $arrne ); print_r($arr); 

Просто проверьте значение print_r ($ arr); Надеюсь, это то, что вы хотите. 🙂

Добавление другого игрока

 $tempArray = json_decode($inp, true); array_push($tempArray['players'], array('name' => $data['username'], 'image' => $data['userimage'], 'roll_over_image' => 'tank.jpg')); 

Обновление матчей

первый массив совпадений

 $tempArray['games'][0]['matches']; 

второй массив совпадений

 $tempArray['games'][1]['matches']; 

теперь являются простыми двумерными массивами с ключами player1id , player2id и winner – их должно быть легко обновить. После этого вы можете закодировать $tempArray на json.

 <html> <head> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.3.min.js" ></script> </head> <body> <?php //first copy your json data data.json $str = file_get_contents('data.json');//get contents of your json file and store it in a string,bro small suggestion never keep any JSON data in ur html file its not safe.always keep json data in external file. $arr = json_decode($str, true);//decode it $arrne['players'] = "sadaadad"; $arrne['image'] = "sadaadad"; $arrne['roll_over_image'] = "sadaadad"; array_push( $arr['employees'], $arrne);//push contents to ur decoded array ie $arr $str = json_encode($arr); //now send evrything to ur data.json file using folowing code if (json_decode($str) != null) { $file = fopen('data.json','w'); fwrite($file, $str); fclose($file); } else { // invalid JSON, handle the error } ?> </body>