所以我尝试使用PHP通过电子邮件发送表单的结果。在我的表格中,我有一堆复选框。当选中组中的至少一个复选框时,以下脚本有效。如果未选中任何复选框,则会收到以下错误:
警告: Implode()[function.implode]:{xxx}数组
上{name of php doc}传递的无效增量以下是我正在使用的代码示例:
<?php
$data = array();
foreach ($_POST as $key => $value) {
$data[] = $value;
}
if(!$data[14]) //$data[14] is an array of checkbox values
{echo 'No User Selection';}
else
{echo implode(" | ", $data[14]);} //This is where the error occurs
?>
HTML代码
<label for="b0" class="left">Item 1</label>
<input type="checkbox" name="b[0]" id="b0" value="Item 1"/>
<label for="b1" class="left">Item 2</label>
<input type="checkbox" name="b[1]" id="b1" value="Item 2"/>
<label for="b2" class="left">Item 3</label>
<input type="checkbox" name="b[2]" id="b2" value="Item 3"/>
ect....
有没有人知道我为什么会收到这个错误?
答案 0 :(得分:2)
确保变量a)已设置且b)为数组。
$data = array();
foreach ($_POST as $key => $value) {
$data[] = $value;
}
if ( !isset($data[14]) || !is_array($data[14]) ) {
echo 'No User Selection';
} else {
echo implode(" | ", $data[14]);
}
始终使用isset()正确检查变量,除非您喜欢巨大的错误日志!我还建议使用$ _POST键作为$ data的键,这样当你想要查找特定的$ _POST项时,生活会更加轻松。
答案 1 :(得分:0)
如果未选中该复选框,则不会将其发送到服务器。 我建议你做这样的事情:
<label for="b0" class="left">Item 1</label>
<input type="hidden" name="b[0]" value=""/>
<input type="checkbox" name="b[0]" id="b0" value="Item 1"/>
<label for="b1" class="left">Item 2</label>
<input type="hidden" name="b[1]" value=""/>
<input type="checkbox" name="b[1]" id="b1" value="Item 2"/>
<label for="b2" class="left">Item 3</label>
<input type="hidden" name="b[2]" value=""/>
<input type="checkbox" name="b[2]" id="b2" value="Item 3"/>
这样,您确定始终发送b [0],b [1]等
答案 2 :(得分:0)
您通过创建数据阵列自己造成问题。直接进入POST阵列。其他一切都使问题过于复杂。
<?php
if(!isset ($_POST['b']) || !is_array($_POST['b'])) {
echo 'No User Selection';
} else {
echo implode(" | ", $_POST['b']);
}
?>
此外,如果您的表单内容略有变化,或者您想重新排序字段,那么您的幻数14将不再有效。
除非你改变它,否则你的代码将是令人难以置信的脆弱。