2010-07-08 78 views
1

我“无法接收了在复选框的现场检查的项目这是一个形式的一部分的列举MPHP后复选框帮助

我有几个复选框的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”(不带引号)

回答

2

您可以检查是否值是一个数组,不同的处理:

foreach($_POST as $key => $val) { 
    if (is_array($val)) { 
    $body .= $key . " : " . implode(",",$val) . "\r\n"; 
    } else { 
    $body .= $key . " : " . $val . "\r\n"; 
    } 
} 
+0

谢谢,这就像一个魅力。不熟悉is_array()或implode()。 – mastofact 2010-07-08 17:53:06

1

它的印刷载:阵列,因为这是它到底是什么。你需要遍历它(第一内侧另一个循环)来访问值内:

foreach($_POST as $key => $val) { 
    if($key == 'carry') { 
     foreach($val as $carry) { 
      $body .= $carry; 
     } 
    } 
    else { 
     $body .= $key . " : " . $val . "\r\n"; 
    } 
} 

这是完全未经测试,但希望的逻辑是合理的:)

+0

或者如果他的LO oking for'carry':'foreach($ _POST ['carry'] as $ key => $ val);' – 2010-07-08 17:39:18

2

如果你希望字符串'1; 2; 3',你应该联合起来的项目在数组中:

$carry= implode('; ', $_POST['carry']); 

但这样做势必会造成不明确的结果,如果任何数组中的项目本身有一个分号

遍历数组后允许任何其成员是数组:

或者,如果你并不需要那么多的控制权,准确的格式和调试转储罚款(但你需要看到的不仅仅是无用的字符串'Array'更多:

$body= var_export($_POST, TRUE);