11

我发布了一系列复选框。我不能让它工作。我没有在 foreach 循环中包含正确的语法以保持简单。但它正在工作。我通过尝试对文本字段而不是复选框执行相同的操作来进行测试,并且它与文本字段一起使用。

<form method="post">
<?php 
foreach{
echo'
<input id="'.$userid.'" value="'.$userid.'"  name="invite[]" type="checkbox">
<input type="submit">';
}
?>
</form>

这是不起作用的部分。它正在回显“邀请”而不是数组。

<?php
    if(isset($_POST['invite'])){
$invite = $_POST['invite'];
echo $invite;
}
4

5 回答 5

24

您的 $_POST 数组包含邀请数组,因此将其读取为

<?php
if(isset($_POST['invite'])){
  $invite = $_POST['invite'];
  echo $invite;
}
?>

行不通,因为它是一个数组。您必须遍历数组以获取所有值。

<?php
if(isset($_POST['invite'])){
  if (is_array($_POST['invite'])) {
    foreach($_POST['invite'] as $value){
      echo $value;
    }
  } else {
    $value = $_POST['invite'];
    echo $value;
  }
}
?>
于 2012-05-18T15:29:31.300 回答
14

我刚刚使用了以下代码:

<form method="post">
    <input id="user1" value="user1"  name="invite[]" type="checkbox">
    <input id="user2" value="user2"  name="invite[]" type="checkbox">
    <input type="submit">
</form>

<?php
    if(isset($_POST['invite'])){
        $invite = $_POST['invite'];
        print_r($invite);
    }
?>

当我选中两个框时,输出是:

Array ( [0] => user1 [1] => user2 )

我知道这并不能直接回答您的问题,但它为您提供了一个可供参考的工作示例,并希望能帮助您解决问题。

于 2012-05-18T15:41:45.817 回答
5

查看 implode() 函数作为替代方法。这会将数组转换为列表。第一个参数是您希望如何分隔项目。在这里,我使用了一个逗号,后面有一个空格。

$invite = implode(', ', $_POST['invite']);
echo $invite;
于 2015-02-02T21:05:45.653 回答
0
// if you do the input like this
<input id="'.$userid.'" value="'.$userid.'"  name="invite['.$userid.']" type="checkbox">

// you can access the value directly like this:
$invite = $_POST['invite'][$userid];
于 2012-05-18T15:24:52.567 回答
0

因为您的<form>元素在 foreach 循环内,所以您正在生成多个表单。我假设您想要一种形式的多个复选框。

试试这个...

<form method="post">
foreach{
<?php echo'
<input id="'.$userid.'" value="'.$userid.'"  name="invite[]" type="checkbox">
<input type="submit">';
?>
}
</form>
于 2012-05-18T15:25:55.407 回答