[英]How can I read/ write to a single array in json with PHP
我有一個簡單的腳本,可以將數據存儲在 json 文件中。 每次保存表單時,它都會創建一個新數組。 我只想更新目標並在同一個數組中提出。
形式:
<form action="process.php" method="POST">
Goal:<br>
<input type="text" name="goal">
<br><br/>
Raised:<br>
<input type="text" name="raised">
<br><br>
<input type="submit" value="Submit">
</form>
過程.php
<?php
$myFile = "data.json";
$arr_data = array();
try
{
$formdata = array(
'goal'=> $_POST['goal'],
'raised'=> $_POST['raised']
);
$jsondata = file_get_contents($myFile);
$arr_data = json_decode($jsondata, true);
array_push($arr_data,$formdata);
$jsondata = json_encode($arr_data, JSON_PRETTY_PRINT);
if(file_put_contents($myFile, $jsondata)) {
echo 'Data successfully saved';
}
else
echo "error";
}
catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
?>
<?php
$formdata = array(
'goal'=> $_POST['goal'],
'raised'=> $_POST['raised']
);
try {
$fp = fopen('data.json', 'w');
fwrite($fp, json_encode($formdata));
fclose($fp);
}
catch(\Exception $e) {
// Caught Some Exception
}
您可以簡單地使用fopen()
和fwrite()
打開和寫入文件。 數據將被新數據替換。
array_push
附加。 您想替換現有的,而不是添加,對嗎? 所以:
<?php
$myFile = "data.json";
try {
$arr_data = json_decode(file_get_contents($myFile), true);
// don't forget to validate first of course:
$arr_data['goal'] = $_POST['goal'];
$arr_data['raised'] = $_POST['raised'];
$jsondata = json_encode($arr_data, JSON_PRETTY_PRINT);
...
對於存檔,這個 file_put_contents 不會有太大幫助。
每當有人從表單中發布數據時,您必須以 append 模式(a)打開您的文件(data.json)。 然后使用fwrite
或fopen
編寫您的內容。
在這種情況下,您將獲得所有單個數據集作為一個單獨的數組。 不是一個數組
當你做$arr_data = json_decode($jsondata, true);
, $arr_data
成為一個關聯數組,這意味着你可以簡單地做$arr_data['goal'] = $_POST['goal']
或$arr_data['goal'] = $formdata['goal']
,之后你可以重新編碼數組並將其保存到您的文件中。 因此,您只需將帶有array_push()
調用的行切換到我剛剛解釋的代碼。 這適用於'goal'
和'raised'
鍵
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.