我无法接收在复选框字段中检查的项目列表,这些复选框是表单的一部分。
我有一个带有几个复选框的HTML表格:
HTML
<input type="checkbox" name="carry[]" value="1" />
<input type="checkbox" name="carry[]" value="2" />
<input type="checkbox" name="carry[]" value="3" />
PHP - 这就是我用来将表单发布到电子邮件地址
foreach($_POST as $key => $val) {
$body .= $key . " : " . $val . "\r\n";
我在电子邮件中获取的值为:“carry:Array” - 而不是所选的实际值。如何处理在表单中选择的复选框数组并将其发布?
理想情况下,我想要:“随身携带:1; 2; 3”(不带引号)
答案 0 :(得分:2)
如果你想要字符串'1; 2; 3'
,你应该将数组中的项连接在一起:
$carry= implode('; ', $_POST['carry']);
但是,如果数组中的任何项本身都带有分号,那么这样做会自然导致模糊的结果。
迭代post数组,允许其任何成员为数组:
foreach($_POST as $key=>$val) {
if (is_array($val))
$val= implode('; ', $val);
$body.= "$key: $val\r\n";
}
或者,如果您不需要对确切的格式进行如此多的控制,并且调试转储很好(但您需要查看的不仅仅是无用的字符串'Array'
:
$body= var_export($_POST, TRUE);
答案 1 :(得分:2)
您可以检查该值是否为数组并以不同方式处理:
foreach($_POST as $key => $val) {
if (is_array($val)) {
$body .= $key . " : " . implode(",",$val) . "\r\n";
} else {
$body .= $key . " : " . $val . "\r\n";
}
}
答案 2 :(得分:1)
它是打印进位:数组,因为它正是它的本质。你需要遍历它(第一个内部的另一个循环)来访问里面的值:
foreach($_POST as $key => $val) {
if($key == 'carry') {
foreach($val as $carry) {
$body .= $carry;
}
}
else {
$body .= $key . " : " . $val . "\r\n";
}
}
那是完全未经测试的,但希望逻辑是合理的:)