【发布时间】:2012-03-17 12:58:44
【问题描述】:
我是 PHP 新手,在阅读表单提交的复选框时遇到问题。在解释之前,我想提一下,我正在尝试编辑一个更大的应用程序,并且无法以任何其他方式发送数据。只需找到一种读取发送内容的好方法即可。
发送普通文本输入时,表单将发布以下内容:
custom[0][type]="text"
custom[0][name]="VariableName"
custom[0][value]="VariableName"
基本上有一个主要的“自定义”多维数组,它有几个元素(0、1、2、3 等),每个元素都有名称和值。
但是,当其中一个元素是复选框时,会发布以下内容:
custom[1][type]="list"
custom[1][name]="SelectedOptions"
custom[1][value]="Value1"
custom[1][value]="Value3"
custom[1][value]="Value5"
进入 PHP 方面,这是我用来读取表单发送的数据的代码。下面的代码在场景 1 中工作正常(基于文本的输入),但当我们有列表类型的自定义数据时只读取一个值。
foreach($_POST['custom'] as $item){
if($item['value'] != "") echo $item['name'].'='.$item['value']
}
问题在于 $item['value'] 只读取其中一个值,而不是全部 3 个。如何在一个变量中获取所有 3 个值?这可能是一件很容易的事情......
总而言之,这就是它与 POST 一起发送的内容(为 Variable2 选中了 3 个复选框)
custom[0][name] Variable1
custom[0][type] text
custom[0][value] ValueForVariable1
custom[1][name] Variable2
custom[1][type] checkbox
custom[1][value] Value1
custom[1][value] Value3
custom[1][value] Value5
这就是 print_r($_POST) 为上面发布的数据显示的内容
[custom] => Array
(
[0] => Array
(
[value] => ValueForVariable1
[name] => Variable1
[type] => text
)
[1] => Array
(
[value] => Value1
[name] => Variable2
[type] => checkbox
)
为了确保我们都在同一个页面上,实际数据是由更复杂的系统生成的,我们无法真正改变它。我有兴趣了解我们如何读取在 POST 中发送的 Variable2 的所有 3 个值。
谢谢!
【问题讨论】:
-
print_r($_POST)究竟会产生什么? (只为了这个块就可以了) -
如果我正确理解您的命名,复选框名称可能不正确。复选框名称必须是 custom[1][value][] 否则您将用最后一个覆盖该值。
-
@jcmeloni - 我已经编辑了问题并添加了 print_r 数据。
-
@Rufinus - 仅凭我的基本 php 知识,我正在使用的系统中似乎有很多问题,但现在我必须完成这项工作。
-
再次阅读我的第一条评论.....当然,您可以在 firebug 中阅读它,它会向您显示发送的内容,但是当 php 组装数组时,它会完全按照我说的...它会覆盖这些值。