Javascript 如何在PHP中将输入表单数据保存为数组
我有一张表格,上面有学生姓名、科目和年龄。提交时,它将数据保存为txt文件中的数组。下一次,当我放置新数据并提交它时,它会在该txt文件中创建一个新数组,而不是将其附加到以前的数组中Javascript 如何在PHP中将输入表单数据保存为数组,javascript,php,forms,Javascript,Php,Forms,我有一张表格,上面有学生姓名、科目和年龄。提交时,它将数据保存为txt文件中的数组。下一次,当我放置新数据并提交它时,它会在该txt文件中创建一个新数组,而不是将其附加到以前的数组中 <?php if(!empty($_GET)){ $student = []; $student['name'] = $_GET['name']; $student['subject'] = $_GET['subject']; $student['age'] = $_GET['
<?php
if(!empty($_GET)){
$student = [];
$student['name'] = $_GET['name'];
$student['subject'] = $_GET['subject'];
$student['age'] = $_GET['age'];
$studentArray = [];
array_push($studentArray, $student);
$str = print_r($studentArray, true);
file_put_contents('student.txt', $str, FILE_APPEND);
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form action="" method="GET">
<label for="name">Name:</label>
<input type="text" name="name" id="name">
<label for="name">Subject:</label>
<input type="text" name="subject" id="subject">
<label for="name">Age:</label>
<input type="number" name="age" id="age">
<input type="submit" name="submitButton">
</form>
</body>
</html>
文件
姓名:
主题:
年龄:
输出如下所示:
但是我想像下面这样保存它:
我该怎么做呢?您必须使用JSON才能不断更新阵列。 重要的一点是,您必须将您的学生加载到一个变量中,然后将新学生推送到该变量中,这样,您最终可以保存您的学生变量,该变量包含您想要的一个数组中的所有学生 使此代码生效的要求:
[]
放入该文件中if(!empty($_GET)){
$student = [];
$student['name'] = $_GET['name'];
$student['subject'] = $_GET['subject'];
$student['age'] = $_GET['age'];
$studentArray = json_decode( file_get_contents('student.json'), true);
array_push($studentArray, $student);
$str = print_r($studentArray, true);
file_put_contents('student.json', json_encode($studentArray));
}
如果您确实必须在文本中查看您的漂亮数组,请使用以下命令:
if(!empty($_GET)){
$student = array();
$int = 0;
$txtfile = "student.txt";
if (file_exists($txtfile)) {
$fgc = file_get_contents($txtfile);
$expl = explode("[".$int."] => Array", $fgc);
while (count($expl) > 1) {
$expl2 = (count($expl) > 1) ? explode("[".($int+1)."] => Array", $expl[1])[0] : $expl[1];
$m = preg_match_all("@\\[([\d\w]+)\\] => ([^\n]*)@imus", $expl2, $matches);
if ($m == 0) { break; }
foreach ($matches[1] as $key => $val) {
$student[$int][$val] = $matches[2][$key];
}
$int++;
$expl = explode("[".$int."] => Array", $fgc);
}
}
$student[$int]['name'] = $_GET['name'];
$student[$int]['subject'] = $_GET['subject'];
$student[$int]['age'] = $_GET['age'];
$str = print_r($student, true);
file_put_contents('student.txt', $str);
print_r($student);
}
但请使用以下序列化版本:
if(!empty($_GET)){
$student = array();
$int = 0;
$txtfile = "student.txt";
if (file_exists($txtfile)) {
$fgc = file_get_contents($txtfile);
$student = unserialize($fgc);
$int = count($student);
}
$student[$int]['name'] = $_GET['name'];
$student[$int]['subject'] = $_GET['subject'];
$student[$int]['age'] = $_GET['age'];
file_put_contents('student.txt', serialize($student));
print_r($student);
}
打印仅用于调试
玩得开心;) 将文件读入数组(如果可能,应另存为JSON),追加数据,然后用整个数组覆盖该文件。该输出格式用于调试,请使用json_编码和json_解码。谢谢您的回答。但是,使用您的代码,我仍然无法将它们保存为JSON中的数组。student.json文件show null。嘿,你说得对,它可能根本不起作用,因为我在第6行有一个输入错误(在
file\u get\u contents
旁边键入了file\u get\u contents
)。新代码现在应该可以用了。嘿,实际上我注意到了打结的错误并改正了它。但它不起作用。