表单中的多维数组发布

Posted

技术标签:

【中文标题】表单中的多维数组发布【英文标题】:multi-dimensional array post from form 【发布时间】:2010-12-15 16:49:12 【问题描述】:

我想知道如何发布多维数组?

基本上我想选择一个用户,选定的用户将有电子邮件和姓名发送到帖子。

因此选择 100 个用户,将有电子邮件和姓名。我想像下面这样进入 php

$_POST['users'] = array(
  array(name, email),
  array(name2, email2),
  array(name3, email3)
);

有什么想法吗?

【问题讨论】:

相关:***.com/questions/1548159/… 【参考方案1】:

您可以这样命名表单元素:

<input name="users[1][name]" />
<input name="users[1][email]" />
<input name="users[2][name]" />
<input name="users[2][email]" />
...

你懂的……

【讨论】:

users[][name] 怎么样,我必须设置 id (1, 2..) 吗? 不。你也可以选择users[] 如果没有预定义用户数量,比如用户单击 + 按钮并打开一组新字段,他们实际上可以选择不添加任何用户,该怎么办 @Pila 之前的评论有帮助吗? 我最终使用 jQuery 来动态创建新的输入字段,其名称使用如下计数器:name = "users["+i+"][name]"【参考方案2】:

Here 的另一种方式:serialize 数组、post 和unserialize(加密可选)。

这是一个对我有用的例子:

send.php”:

<input type="hidden" name="var_array" value="<?php echo base64_encode(serialize($var_array)); ?>">

receive.php”:

if (isset($_POST['var_array'])) $var_array = unserialize(base64_decode($_POST['var_array']));

这样您就可以使用$var_array,就好像它在两个文件/会话之间共享一样。当然,这个 send.php 中需要有一个 &lt;form&gt;,但您也可以将它作为查询字符串发送到 &lt;a&gt;

这种方法在处理多维数组时有很大的优势。

【讨论】:

很棒的解决方案。奇迹般有效。谢谢。 @denislexic 我真的很高兴有人喜欢它! :) 而且是最好的解决方案。谢谢你:)【参考方案3】:

好吧,你将不得不在某个地方做一些循环。如果您使用索引命名每个表单元素(如 Franz 建议的那样),您将在 PHP 端进行循环。

如果您想使用 javascript 进行循环,请让您的表单 onSubmit() 创建一个 JSON 字符串以传递给 PHP。然后让 PHP 像这样检索它:

json_decode($_POST['users'], true);

第二个参数告诉它创建数组而不是匿名对象。

【讨论】:

以上是关于表单中的多维数组发布的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jquery 创建具有来自动态创建的表单字段的值的多维数组?

jQuery多维数组名称选择器

将多维表单数据序列化为 JSON 对象数组以使用 application/json

jQuery多维数组名称选择器

将php多维数组输出到html表

如何在 playframework 中提交带有多维数组的表单并将变量传递给控制器​​的操作