php复选框数组访问

php复选框数组访问,php,html,arrays,Php,Html,Arrays,我有上面的复选框数组。它可以在我的电脑上工作,但不能在服务器上工作;看起来令人困惑的部分在$v[$i]上 $v未定义,但确实未在其他地方使用。问题是我的复选框选择从未恢复,代码也从未进入if语句 但是,如果我添加以下内容,我可以看到值。只是复选框在处理后丢失了 $v=$_POST['v']; 而list$key,$val=@each$v{ $x.='11*'。$key.-'.$val.'22'; } 我的目标是保留表单上选中的复选框,我需要其他地方的$s。有没有替代$v[$i]的解决方案 有人能

我有上面的复选框数组。它可以在我的电脑上工作,但不能在服务器上工作;看起来令人困惑的部分在$v[$i]上

$v未定义,但确实未在其他地方使用。问题是我的复选框选择从未恢复,代码也从未进入if语句

但是,如果我添加以下内容,我可以看到值。只是复选框在处理后丢失了 $v=$_POST['v']; 而list$key,$val=@each$v{ $x.='11*'。$key.-'.$val.'22'; }

我的目标是保留表单上选中的复选框,我需要其他地方的$s。有没有替代$v[$i]的解决方案


有人能帮我修一下吗?谢谢。

试着打印文章,然后打印v,看看有没有什么结果。如果$\u POST有效,那么您就知道它被正确地发回页面。如果$v正常工作,那么您就知道您正确设置了$v=$\u POST。由于您实际上没有向我们提供有关db_数据的任何信息,我假设这是正确的,并且在第一次加载时显示所有复选框,因此只要它已发布并且您正在设置$v变量,它就应该工作

另一个注意事项是,您应该在使用前验证$\u POST变量,但要在工作正常后进行验证

变化

$i=0;
while (db_data) {
$i++;
echo '<input type="checkbox" name="v['.$i.']" value="'.$url.'"';
if ($v[$i]) {
  echo ' checked';
  $s .= $url;
}
echo '/>';

}

事实上,PHP将其作为一个数组,这是PHP的一个非故意设计的特性。您不需要设置索引,只需将其定义为一个数组。

问题似乎是$v=$\u POST。如果您只是这样做,那么您的条件语句将需要

name="v[]"
或者只做$v=$\u POST['v']

对不起,请忽略上面的内容,因为您确实提到您做了那个部分。见下文

这是工作代码

if ($v['v'][$i]) {
   ///Checkbox
}
我留下的代码基本上是一样的,目的是告诉您哪里出了问题,但是您应该在使用之前检查$\u POST变量是否存在漏洞。如果我也这样做,我会使用计数,但它是作为数据库代码的占位符设置的。确保$url也已填充

您还可以删除$i变量,如:

<form action="" method="post">
<?php
$v = $_POST['v'];
$i=0;
while ($i < 4) {
    $i++;
    $url = "test.com/".$i;
    echo '<input type="checkbox" name="v['.$i.']" value="'.$url.'"';
    if ($v[$i]) {  
        echo ' checked="checked"';  
        $s .= $url;
    }
    echo '/> '.$url.'<br />';
}
?>
<input type="submit" name="submit" value="submit" />
</form>

你复制/粘贴错误了吗?嗯?抱歉,这里没有足够的内容,请详细说明一下,$v和$i的定义在哪里?您的代码示例显然不完整。请添加您期望看到的内容和实际看到的内容。不,我必须设置索引,否则,它将按顺序存储为v0、v1、v2…无论我选择什么内容。如果您按照FatherStorm上面所说的做,我想因为是新用户,所以无法对其进行评论,然后你需要使用is_数组和in_数组,不管怎样,这可能会更好。我知道,既然while循环起作用了,那么_POST就起作用了。问题是这个复选框马上就丢失了!我得到了最好的帮助!你们太棒了!
<form action="" method="post">
<?php
$v = $_POST['v'];
$i=0;
while ($i < 4) {
    $i++;
    $url = "test.com/".$i;
    echo '<input type="checkbox" name="v['.$i.']" value="'.$url.'"';
    if ($v[$i]) {  
        echo ' checked="checked"';  
        $s .= $url;
    }
    echo '/> '.$url.'<br />';
}
?>
<input type="submit" name="submit" value="submit" />
</form>
<?php
$v = $_POST['v'];
while (db_data) {
    echo '<input type="checkbox" name="v[]" value="'.$url.'"';
    if (is_array($v)) {
         if (in_array($url,$v)) {  
              echo ' checked="checked"';  
              $s .= $url;
         }
    }
    echo '/> '.$url.'<br />';
}
?>