到处寻找,但无法找到解决方案。每个人都谈论一个这样的团体:
<input type="checkbox" value="red" name="colors[]"> red<br />
<input type="checkbox" value="purple" name="colors[]"> purple<br>
<input type="checkbox" value="blue" name="colors[]"> blue<br>
<input type="checkbox" value="black" name="colors[]"> black<br>
但我需要在这样的单一表格中做多个小组:
<input type="checkbox" value="red" name="colors[]"> red<br />
<input type="checkbox" value="purple" name="colors[]"> purple<br>
<input type="checkbox" value="blue" name="colors[]"> blue<br>
<input type="checkbox" value="black" name="colors[]"> black<br>
<input type="checkbox" value="sm" name="sizes[]"> small<br />
<input type="checkbox" value="med" name="sizes[]"> medium<br>
<input type="checkbox" value="lrg" name="sizes[]"> large<br>
<input type="checkbox" value="xlrg" name="sizes[]"> x-large<br>
并且最重要的是表单是动态的。名称是可变的和未知的,所以在php邮政编码中,它不能是$ _POST [&#39;颜色&#39;]。
我有这个代码片段可以抓取所有未知名称并构建一条消息,以便以后插入电子邮件脚本以通过电子邮件发送提交表单的值:
foreach ($_POST as $field=>$value) {
if ($field != "submit") $msg .= $field . ": " . $value . "\n";
}
但是你可能知道,当它到达一组复选框时,它表示值为&#34; array&#34;,因此它不仅需要将数组拆分或内爆为复选框的多个值,然后它需要为多组复选框执行此操作。
所以例如,这可能是$ msg在特定表单上的内容:
first_name: first
last_name: last
email_address: email@email.com
phone: 1234567890
variable_radio_name: answer
variable_selectbox_name: answer
colors_from_checkbox_group_one: red,blue
sizes_from_checkbox_group_two: med,lrg
variable_textarea_name: blah blah blah
文本框,textareas,收音机,下拉框都很简单,因为它可以回答一个问题,但这些复选框很难。
修改
是这样的:
if ($field != "submit") $msg .= $field . ": " . is_array($value) ? implode(',', $value) . "\n" ? $value . "\n";
并且像这样:
if ($field != "submit") {
$msg .= $field . ": " . is_array($value) ? implode(',', $value) . "\n" ? $value . "\n";
}
语法错误两种方式。
答案 0 :(得分:1)
您的语法错误是使用?
两次而不是:
用于三元组的发送部分。此外,您需要使用括号使连接正常工作:
$msg .= $field . " : " . (is_array($value) ? implode(',', $value) . "\n" : $value . "\n");
这可能更具可读性:
if ($field != "submit") {
if(is_array($value)) {
$msg[] = "$field : " . implode(',', $value);
} else {
$msg[] = "$field : $value";
}
}
$msg = implode("\n", $msg);