【问题标题】:PHP post checkboxes helpPHP post 复选框帮助
【发布时间】:2011-03-13 11:43:50
【问题描述】:

我无法接收在作为表单一部分的复选框字段中选中的项目列表。

我有一个带有几个复选框的 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”——不是选择的实际值。如何处理表单中选中的复选框数组并发布?

理想情况下,我想要:“carry: 1; 2; 3”(不带引号)

【问题讨论】:

    标签: php html arrays post


    【解决方案1】:

    您可以检查该值是否为数组并以不同方式处理:

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

    【讨论】:

    • 谢谢,这很有魅力。不熟悉 is_array() 或 implode()。
    【解决方案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);
    

    【讨论】:

      【解决方案3】:

      它正在打印进位:数组,因为它就是这样。您需要遍历它(第一个循环内的另一个循环)以访问其中的值:

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

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

      【讨论】:

      • 或者如果他正在寻找'carry':foreach( $_POST['carry'] as $key =&gt; $val );
      猜你喜欢
      • 2011-09-25
      • 1970-01-01
      • 1970-01-01
      • 2011-09-12
      • 1970-01-01
      • 1970-01-01
      • 2011-10-12
      • 2012-10-16
      • 1970-01-01
      相关资源
      最近更新 更多