我在输入数据后尝试将数据添加到数组中,但出于某些原因,当我这样做时
<?php
session_start();
$u = array("billy\n", "tyson\n", "sanders\n");
serialize($u);
file_put_contents('pass.txt', $u);
if (isset($_POST['set'])) {
unserialize($u);
array_push($u, $_POST['check']);
file_put_contents('pass.txt', $u);
}
?>
<form action="index.php" method="post">
<input type="text" name="check"/><br>
<input type="submit" name="set" value="Add person"/><br>
<?php echo print_r($u); ?>
</form>
它将它放在数组中,但是当我再次执行它时,它会重写先前写入的元素。有人知道如何解决这个问题吗?
答案 0 :(得分:1)
你总是从同一个阵列开始,这意味着无论你做什么,你都只能添加一个人。我想/您正在尝试将每个人添加到文件中,这可以通过将代码修改为类似这样的内容来实现:
session_start();
$contents = file_get_contents('pass.txt');
if (isset($_POST['set'])) {
$u = unserialize($contents);
array_push($u, $_POST['check'] . "\n");
$u = serialize($u);
file_put_contents('pass.txt', $u);
}
另请注意,您不能单独使用[un]serialize()
,必须在变量设置中使用它。
**注意:就个人而言,我只是走简单的路线并做$u[] = $_POST['check']
,因为使用array_push()
推送一个元素似乎有点......过度杀伤。