如何在不重写之前将元素添加到数组? - PHP

时间:2014-04-26 03:37:11

标签: php arrays

我在输入数据后尝试将数据添加到数组中,但出于某些原因,当我这样做时

<?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>

它将它放在数组中,但是当我再次执行它时,它会重写先前写入的元素。有人知道如何解决这个问题吗?

1 个答案:

答案 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()推送一个元素似乎有点......过度杀伤。