我有一个表单,用户可以提交1或2个复选框。它必须至少为1.复选框设置如下:
<input name="request['+fields+'][Type of Folder:]"
id="cbpathCDB'+fields+'" type="checkbox"
value="Content Database" class="cbShowPath required" data-id="'+fields+'"/>
<input name="request['+fields+'][Type of Folder:]"
id="cbpathEFS'+fields+'" type="checkbox"
value="File System" class="efsShowPath required" data-id="'+fields+'"/>
还有其他输入也被提交,所以我每个都使用它:
$a=$_REQUEST['request'];
foreach ($a as $name) {
foreach ($name as $key => $desc) {
if ($desc !== '') {
$note.= $key;
$note.= $desc;
}
}
}
如果用户选中ONE复选框,则会获得所有数据,但如果用户同时选中两个复选框,则仅显示FIRST复选框的值。
为了获得这两个值,我需要做什么?
我在这里需要第3个foreach才能获得name =“request [] [] []”?
编辑:这里有一些更新......
如果我使用他的foreach:
foreach ($a as $name) {
foreach ($name as $key => $desc) {
foreach ($desc as $d){
$note.= $key;
$note.= $d;
}
if ($desc !== '') {
$note.= $key;
$note.= $desc;
}
}
}
我得到了这些结果: 文件夹类型:文件夹的内容DBType:文件夹的文件系统类型:数组
如果我使用他的foreach:
foreach ($a as $name) {
foreach ($name as $key => $desc) {
if ($desc !== '') {
$note.= $key;
$note.= $desc;
}
}
}
我得到了这些结果: 文件夹类型:数组
答案 0 :(得分:2)
将表单元素的名称更改为
request['+fields+'][Type of Folder:][]
所以你的代码
<input name="request['+fields+'][Type of Folder:][]" id="cbpathCDB'+fields+'" type="checkbox" value="Content Database" class="cbShowPath required" data-id="'+fields+'"/>
<input name="request['+fields+'][Type of Folder:][]" id="cbpathEFS'+fields+'" type="checkbox" value="File System" class="efsShowPath required" data-id="'+fields+'"/>
这将使$_REQUEST['request']["'+fields+'"]['Type of Folder:']
数组包含每个复选框的值。
您需要修改使用$desc
的代码部分以包含另一个循环。
foreach ($a as $name) {
foreach ($name as $key => $desc) {
switch (gettype($desc)) {
case 'array':
foreach ($desc as $i => $item) {
$note .= "{$key}[{$i}]";
$note .= $item;
}
break;
case 'string':
default:
if ($desc !== '') {
$note.= $key;
$note.= $desc;
}
}
}
}