我尝试通过$ POST发送数据,并将数据传递并推送到数组中,然后写回json文件。我的问题是在数组推送中出现,我想我需要一个foreach来超越array_push,这样当jsondata被写入文件时,然后在发送下一个$ POST时重新导入该文件,它将全部成为嵌套在同一个json dict下。但是你可以从我的check.json文件中看到,我没有运气。提前谢谢......
test11.php
<?php
$code = $_POST['code'];
$cpu = $_POST['cpu'];
$formdata = array($code=> $cpu);
$inp = file_get_contents('results.json');
$tempArray = json_decode($inp, true);
array_push($tempArray, $formdata);
$jsonData = json_encode($tempArray);
file_put_contents('results.json', $jsonData);
echo "This is the formdata = $formdata";
echo "This is the inp = $inp";
echo "This is the jsonData = $jsonData ";
?>
t11.html
<form action="test11.php" method="POST">
CPU Name:<br>
<input type="text" name="cpu">
<br><br/>
Code:<br>
<input type="text" name="code">
<br><br>
<input type="submit" value="Submit">
</form>
check.json
{}
当我运行它时,返回的结果不在同一个JSON DICT中。
Check.json的输出
[{"321":"jake"},{"88":"thomas"}]
我希望它看起来像这样:
[{321:"jake",88:"thomas"}]
答案 0 :(得分:2)
使用+
加入表单数据数组和已解码的JSON数组:
$tempArray = $tempArray + $formdata;
$jsonData = json_encode($tempArray);
或者只需添加新密钥:
$tempArray[$code] = $cpu;
$jsonData = json_encode($tempArray);
或者我认为另一个答案是试图建议,使用一个对象:
$tempObj = json_decode($inp);
$tempObj->$code = $cpu;
$jsonData = json_encode($tempObj);
答案 1 :(得分:1)
我希望这会有所帮助,但是当你想要做的是向对象添加属性时,你会将一个项目附加到数组中。
在“你想要的JSON”中,你显示一个带有一个对象的数组,它有两个属性,321和88.这两个属性的值分别为“jake”和“thomas”。
所以你只能换一行:
array_push($tempArray, $formdata);
将项添加到数组中,类似于
$tempArray->$code = $cpu;
甚至
$tempArray[$code] = $cpu;
只是将属性和值附加到现有对象。
允许您删除:
$formdata = array($code=> $cpu);
谢谢, 韦恩