2010-07-08 74 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);