我在显示联系人表单中选择的正确答案/值时遇到问题。收到的电子邮件只会显示C作为答案,而不会显示选择的选项。
<tr>
<td><label for="gategory">Lemosine</label></td>
<td><input type="checkbox" name="carchoice[]" value="A" /><td>
</tr>
<tr>
<td><label for="gategory">Mini</label></td>
<td><input type="checkbox" name="carchoice[]" value="B" /></td>
</tr>
<tr>
<td><label for="gategory">Van</label></td>
<td><input type="checkbox" name="carchoice[]" value="C" /></td>
</tr>
<tr>
<td><label for="gategory">Off-Road</label></td>
<td><input type="checkbox" name="carchoice[]" value="D" /></td>
</tr>
<tr>
<td><label for="gategory">Station-car</label></td>
<td><input type="checkbox" name="carchoice[]" value="E" /></td>
</tr>
和PHP代码
$check_box_values = "Check box value: ";
if(isset($_POST['carchoice'])){
foreach($_POST['carchoice'] as $value){
$check_box_values .= $value;
$check_box_values .= ', ';
}
}
$msg=
'Name: '.$_POST['name'].'<br />
Email: '.$_POST['email'].'<br />
IP: '.$_SERVER['REMOTE_ADDR'].'<br /><br />
IP: '.$check_box_values['carchoice[]'].'<br /><br />
Message:<br /><br />
'.nl2br($_POST['message']).'
';
这是我在电子邮件中得到的
Name: awdawd aw
Email: adasda@live.dk
IP: 195.249.185.254
IP: C
Message:
awdawdawdd awd awdawd awd awd
不明白我在这里出了什么问题吗?
复选框的值设置为"C",因此将提取C,因为每次尝试都有标签,并在复选框值中给出标签名称。
如注释中所述,您试图访问$check_box_values
的属性,就好像它是一个数组一样,而实际上它是一条字符串。因此,PHP将返回方括号之间指定位置的字符,因为这也是一个字符串,它试图将其强制转换为整数,结果为0(所以它基本上返回$check_box_values
中位置0的字符,即C
)。
读取:按字符访问和修改字符串
此外,您不需要循环来构建值的字符串,您可以使用implode()
:
if (isset($_POST['carchoice'])) {
$val = implode(', ', $_POST['carchoice']);
$check_box_values = "Check box value(s): " . $val;
}