我正在发布一系列复选框。 而且我无法让它工作。 我没有在 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;
}
你的 $_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;
}
}
?>
我只是使用了以下代码:
<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 )
我知道这并不能直接回答您的问题,但它为您提供了一个可以参考的工作示例,并希望可以帮助您解决问题。
查看 implode(( 函数作为替代方案。这会将数组转换为列表。第一个参数是您希望如何分隔项目。在这里,我使用了一个逗号,后面有一个空格。
$invite = implode(', ', $_POST['invite']);
echo $invite;
// 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];
因为 <form>
元素位于 foreach 循环内,所以要生成多个表单。 我假设您希望在一个表单中有多个复选框。
试试这个...
<form method="post">
foreach{
<?php echo'
<input id="'.$userid.'" value="'.$userid.'" name="invite[]" type="checkbox">
<input type="submit">';
?>
}
</form>