Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP post复选框帮助_Php_Html_Arrays_Post - Fatal编程技术网

PHP post复选框帮助

PHP post复选框帮助,php,html,arrays,post,Php,Html,Arrays,Post,我在接收表单中复选框字段中选中的项目列表时遇到问题 我有一个带有几个复选框的HTML表: HTML <input type="checkbox" name="carry[]" value="1" /> <input type="checkbox" name="carry[]" value="2" /> <input type="checkbox" name="carry[]" value="3" /> 我在电子邮件中得到的值是:“carry:Array

我在接收表单中复选框字段中选中的项目列表时遇到问题

我有一个带有几个复选框的HTML表:

HTML

 <input type="checkbox" name="carry[]" value="1" />
 <input type="checkbox" name="carry[]" value="2" />
 <input type="checkbox" name="carry[]" value="3" />
我在电子邮件中得到的值是:“carry:Array”--不是实际选择的值。我如何处理表单中选择的复选框数组并将其发布


理想情况下,我会想:“携带:1;2.3“(不带引号)

它正在打印carry:Array,因为它就是这样。您需要在它上面循环(第一个循环中的另一个循环)才能访问其中的值:

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

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

它正在打印carry:Array,因为它就是这样。您需要在它上面循环(第一个循环中的另一个循环)才能访问其中的值:

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

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

如果您想要字符串
'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);

如果需要字符串
'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);

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

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

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

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

或者如果他正在寻找“carry”:
foreach($\u POST['carry']as$key=>$val);
或者如果他正在寻找“carry”:
foreach($\u POST['carry']as$key=>$val);
谢谢,这就像一个符咒。我不熟悉is\u数组()或内爆()。谢谢,这就像一个符咒。我不熟悉is\u数组()或内爆()。