PHP多复选框值无法发送至邮箱,仅显示‘ARRAY’问题求助
解决PHP表单多选复选框邮件显示ARRAY的问题
嗨,我来帮你搞定这个复选框值在邮件里显示成ARRAY的问题~
问题原因
你设置的复选框name是healthcover[],这意味着表单提交后,PHP会把它作为数组来接收。但你当前的代码直接把数组拼接到邮件文本里,PHP会自动将数组转换成字符串Array,所以邮件里就出现了这个奇怪的内容。
解决方案
只需要在遍历表单字段的时候,判断一下当前值是不是数组,如果是,就把它转换成可读性强的字符串格式(比如逗号分隔的选项,或者分行的列表)。
修改你PHP代码里的foreach循环部分:
原来的代码:
foreach ($_POST as $key => $value) { if (isset($fields[$key])) { $emailText .= "$fields[$key]: $value\n"; } }
替换成下面的代码:
foreach ($_POST as $key => $value) { if (isset($fields[$key])) { // 检查当前值是否为数组 if (is_array($value)) { // 方案1:用逗号分隔选中的选项 $formattedValue = implode(", ", $value); // 方案2:每个选项单独占一行(更易读) // $formattedValue = "\n- " . implode("\n- ", $value); $emailText .= "$fields[$key]: $formattedValue\n"; } else { $emailText .= "$fields[$key]: $value\n"; } } }
修改后的效果
如果用户选中了Life Insurance和Critical Illness Cover,用方案1的话,邮件里对应的内容会变成:
所需保障类型:Life Insurance, Critical Illness Cover
如果用方案2的话,会变成:
所需保障类型:
- Life Insurance
- Critical Illness Cover
这样就能正常显示用户选中的所有选项啦~
内容的提问来源于stack exchange,提问作者Rintu Gochhayat
相关产品推荐
相关产品推荐

