表单中的多维数组发布
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 中需要有一个 <form>
,但您也可以将它作为查询字符串发送到 <a>
。
这种方法在处理多维数组时有很大的优势。
【讨论】:
很棒的解决方案。奇迹般有效。谢谢。 @denislexic 我真的很高兴有人喜欢它! :) 而且是最好的解决方案。谢谢你:)【参考方案3】:好吧,你将不得不在某个地方做一些循环。如果您使用索引命名每个表单元素(如 Franz 建议的那样),您将在 PHP 端进行循环。
如果您想使用 javascript 进行循环,请让您的表单 onSubmit() 创建一个 JSON 字符串以传递给 PHP。然后让 PHP 像这样检索它:
json_decode($_POST['users'], true);
第二个参数告诉它创建数组而不是匿名对象。
【讨论】:
以上是关于表单中的多维数组发布的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 jquery 创建具有来自动态创建的表单字段的值的多维数组?