如何将项添加到json文件格式化数组

use*_*992 12 php post json file

我只使用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);
Run Code Online (Sandbox Code Playgroud)

这就是我的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":"*"
            },

      ]
    }
  ] 
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何在最后添加播放器?我也想知道如何更新

player1id":"*",
"player2id":"*",
"winner":"
Run Code Online (Sandbox Code Playgroud)

在匹配数组中.

cha*_*ool 14

只需解码你的json字符串,然后使用数组推送

$tempArray = json_decode($jsonstring, true);
array_push($tempArray, $your_data);
Run Code Online (Sandbox Code Playgroud)

对于你的情况

    $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);
Run Code Online (Sandbox Code Playgroud)

只需检查print_r($ arr)的值; 我希望这就是你想要的.:)

  • 这不会失败吗?我一直认为json_decode是一个对象表示而不是一个数组.您可以使用true作为第二个参数think,以便获得关联数组表示?谢谢你的解释:) (2认同)
  • @intelis 说第二个参数非常重要。:) (2认同)

sla*_*197 7

添加其他玩家

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

更新匹配

第一个匹配数组

$tempArray['games'][0]['matches'];
Run Code Online (Sandbox Code Playgroud)

第二个匹配数组

$tempArray['games'][1]['matches'];
Run Code Online (Sandbox Code Playgroud)

现在是带键的简单二维数组player1id,player2id并且winner- 应该很容易更新这些数组.之后,您可以将$tempArray背面编码为json.