如何在插入时将值推入数组并递增数组索引?

时间:2010-06-16 11:52:17

标签: php arrays form-submit

我有一个我想要的数组,每当我提交我的表单时,post值就会插入到该数组中,每次都有新的递增索引。 我怎样才能做到这一点?是的提交页面被重定向到自己...

2 个答案:

答案 0 :(得分:3)

在PHP中:

$arr[] = value;
$arr[] = other value;

在HTML中:

<input type="text" name="arr[]" />
<input type="text" name="arr[]" />

答案 1 :(得分:2)

您可以使用会话变量解决此问题。这样就不会覆盖数据。这是一个例子:

$_SESSION['formdata'][] = $_POST['value1'];
$_SESSION['formdata'][] = $_POST['value2'];

重新加载脚本后,数据仍然可用,将其他值推送到数组中将不会覆盖旧数据。你再做一次:

$_SESSION['formdata'][] = $_POST['value3'];
$_SESSION['formdata'][] = $_POST['value4'];

调用$ _SESSION ['formdata'] - 数组,你现在已经存储了所有4个值。

**编辑** 我终于回家了,正如我所承诺的那样,我正在提供另一种使用cookie的解决方案,因为会话不适合你,正如我们已经讨论过的那样。所以我们走了......

首先,我们需要考虑我们想要命名cookie的方式。我建议我们通过ip-address和任何后缀来做到这一点,以确保它真的是已经填充的用户,前者的形式。

所以我们可以这样:

$dataArray[] = $_POST['value1'];
$dataArray[] = $_POST['value2'];

然后我们需要将数据存储到cookie中。我们通过序列化数组来实现这一点,因为我们不想保存数百个cookie。这可以这样工作:

$cookievalue = serialize($dataArray);

// Here we actually generate a cookiename in the format of "IP_formdata"
setcookie($_SERVER['REMOTE_ADDR'] . '_formdata', $cookievalue);

到目前为止一切顺利。在下一个表单中,我们检索cookie数据并反序列化数据,因此我们可以扩展此数组:

$dataArray = unserialize($_COOKIE[$_SERVER['REMOTE_ADDR'] . '_formdata');

现在我们可以从第二种形式向数组中添加其他值:

$dataArray[] = $_POST['value3'];
$dataArray[] = $_POST['value4'];

在将所有其他值放入此数组后,我们再次对其进行序列化并再次将其存储到该数组中:

$cookievalue = serialize($dataArray);
setcookie($_SERVER['REMOTE_ADDR'] . '_formdata', $cookievalue);

现在我们可以为所有其他表格重复这些步骤。请记住,如果您想使用数据,首先必须反序列化数据并将其存储到数组中。

不要忘记,正如我在评论中已经说过的那样:用户可以关闭cookie,然后整个事情都行不通。您还可以添加一些额外的检查以验证这是否是正确的用户。我没有测试过代码,但我认为它应该以这样的方式工作,我希望我可以帮助你或者至少给你一个提示:)