Php 如何将项添加到json文件格式的数组
我只使用1个数据插入json文件Php 如何将项添加到json文件格式的数组,php,json,file,post,Php,Json,File,Post,我只使用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文件的
$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文件的外观。我只想在末尾添加一个玩家
{
"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字符串,然后使用数组推送
$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'];
第二匹配数组
$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 i.e $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>
核心PHP
如果您想要JSON响应上的数组。然后你可以使用这个代码
非常简单的方法,你可以使用这些步骤
1) 步骤:必须使用JSON\u decode()将JSON转换为数组
2) 使用array_merge()方法添加新数组。如果您有兴趣添加数组
$staff = json_decode($staffRes ,true);
$driver = ["helpers"=>[id=>1,name=>hep1],[id=>2,name=>hep2]]
$profile= array_merge($staff ,$driver );
在拉维尔
输出
使用以下php代码
<?php
$message = '';
$error = '';
if(isset($_POST["submit"]))
{
if(empty($_POST["title"]))
{
$error = "<label class='text-danger'>Enter details</label>";
}
else if(empty($_POST["image"]))
{
$error = "<label class='text-danger'>Enter Posted By</label>";
}
else
{
if(file_exists('myfile.json'))
{
$current_data = file_get_contents('myfile.json');
$array_data = json_decode($current_data, true);
$extra = array(
'title' => $_POST['title'],
'image' => $_POST["image"],
);
$array_data[] = $extra;
$products['products']=$array_data[];
$final_data = json_encode($products);
if(file_put_contents('myfile.json', $final_data))
{
$message = "<label class='text-success'>Added Successfully</p>";
}
}
else
{
$error = 'JSON File not exits';
}
}
}
?>
这不是要失败吗?我一直认为json_解码是一种对象表示,而不是数组。您可以使用true作为第二个参数,以便获得关联数组表示形式?谢谢你的解释:)@intelis说得很好,第二个参数非常重要@chandresh_很酷谢谢你的回复。。我有疑问..我能在一段时间内只传递一个值吗,只说玩家的名字,剩下的就留下..这会有什么问题吗???@chandresh_如果你能帮我的话,请帮我..$inp=file_get_contents('7players.json');$tempArray=json_decode($inp,true);$arrne['name']=$\u POST['myusernamer'];阵列推送($arr['players',$arrne);$jsonData=json_encode($tempArray);$jsonData=json_encode($tempArray);文件内容('7players.json',$jsonData);它说第一个参数必须是数组..它们是数组..我做错了什么?将你的数组推行更改为这个数组推行($tempArray['players',$arrne);谢谢回复!!如果某些值中没有值该怎么办。。我根本不传递..或者我用空值传递..然后会发生什么。。