我有这个任务,我用表单创建一个js对象,然后将这些数据保存到json文件。我目前所拥有的是执行此操作的代码,如果文件已存在,则将新数据附加到文件中。唯一的问题是数据作为数组附加,但我需要它作为一个对象附加在一个主数组中。
这是输出(示例)
[
[
{
"campaignId": "campaign1",
"id": "c1"
}
],
[
{
"campaignId": "campaign2",
"id": "c2"
}
]
]
但我需要的是
[
{
"campaignId": "campaign1",
"id": "c1"
},
{
"campaignId": "campaign2",
"id": "c2"
}
]
我不是一个php开发人员所以我的PHP知识相当有限,我正在通过这个任务搜索我的方式,但我已经到了谷歌让我失望的地步。
这是我的PHP代码
<?php
$json = $_POST['json'];
$name = $_POST['name'];
$cat = $_POST['category'];
// make requested directory
// to see if directory exists
$filename = "savedData/$cat/";
if (file_exists($filename)) {
//echo "The directory {$dirname} exists";
} else {
mkdir($filename, 0777);
echo "The directory {$dirname} was successfully created.";
}
$file = "savedData/$cat/$name.json";
// Append new form data in json string saved in text file
$json = json_decode($json);
$formdata = array(
$json
);
$arr_data = array(); // to store all form data
// check if the file exists
if(file_exists($file)) {
// gets json-data from file
$jsondata = file_get_contents($file);
// converts json string into array
$arr_data = json_decode($jsondata, true);
}
// appends the array with new form data
$arr_data[] = $formdata;
// encodes the array into a string in JSON format (JSON_PRETTY_PRINT - uses whitespace in json-string, for human readable)
$jsondata = json_encode($arr_data, JSON_PRETTY_PRINT);
// saves the json string in $file
// outputs error message if data cannot be saved
if(file_put_contents($file, $jsondata)) echo 'Data successfully saved';
?>
我热衷于如何解决这个问题,更重要的是要了解如何解决这个问题以获得所需的输出,任何帮助都会很棒:)
答案 0 :(得分:1)
$json
放在数组中
$formdata = array(
$json
);
然后你把它放在另一个数组里面
$arr_data[] = $formdata;
相当于
$arr_data = array(
array($json)
);
请改为尝试:
$arr_data[] = $json;