使用html和php的复选框数组

时间:2012-08-20 19:37:47

标签: php html arrays checkbox

我有一大堆代码如下:

<td><?
    $days = array("Sun","Mon","Tue","Wed","Thur","Fri","Sat");
    for($i=1;$i<8;$i++)
    {
        echo $days[$i-1]?><input type="checkbox" name="labDays[]" value="<?=$days[$i]?>" checked="checked"><?
    }?>
</td>

但是当我运行print_r($_REQUEST['labDays']);

我得到Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => )

我期待Array ( [0] => Sun[1] => Mon[2] => Tue[3] => Wed[4] => Thur[5] => Fri[6] => Sat)

我确定这是愚蠢的,但我不确定我错过了什么......

print_r($_REQUEST)呕吐:Array ( [pg] => 12 [msg] => Facility Already Exist [facilityname] => kjgkjhgkjhg [facorgtype] => [facilitytype] => [administratorsname] => [divisionname] => [streetaddress1] => [streetaddress2] => [city] => [state] => [zipcode] => [phonenumber] => [faxnumber] => [email] => [mainstate] => [labDays] => Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => ) [facBillingContact] => [facBillingPhone] => [facBillingFax] => [facBillingRep] => [facBillingAccNum] => [facNotes] => [submit] => Create )

var_dump($_REQUEST['labDays'])

array
  0 => string 'Sun' (length=3)
  1 => string 'Mon' (length=3)
  2 => string 'Tue' (length=3)
  3 => string 'Wed' (length=3)
  4 => string 'Thur' (length=4)
  5 => string 'Fri' (length=3)
  6 => string 'Sat' (length=3)

3 个答案:

答案 0 :(得分:2)

我相信这就是你要找的东西:

    <?php
    $days = array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat");
    foreach ($days as $day) {
        echo <<<HTML
    <label>$day
        <input type="checkbox" name="labDays[]" value="$day" checked>
    </label>
HTML;

    }
    ?>

很少注意到:

<强> PHP

  • 不建议使用速记语法(<? ?>,尤其是<?= ?>)。
  • 对于迭代数组,foreachfor更适合。
  • 我使用PHP的heredoc语法来表示字符串。这样我就避免引用混淆。
  • 使用$_POST$_GET而不是$_REQUEST,这被认为更加安全。

<强> HTML

  • 在HTML中使用表单元素的标签,这会将文本与表单控件相关联,再加上单击文本时,它也会标记相应的复选框!
  • checked属性不需要任何值。它就足够了。

答案 1 :(得分:1)

如果您想循环遍历数组,foreach是最佳选择

$days = array("Sun","Mon","Tue","Wed","Thur","Fri","Sat");
foreach($days as $k=>$v)
{
    echo $k?><input type="checkbox" name="labDays[]" value="<?=$v?>" checked="checked"><?
}?>

使用for,你可以这样做:

$days = array("Sun","Mon","Tue","Wed","Thur","Fri","Sat");
for($i=0;$i<=6;$i++)
{
    echo $i;?><input type="checkbox" name="labDays[]" value="<?=$days[$i]?>" checked="checked"><?
}?>

推荐方式..

$days = array("Sun","Mon","Tue","Wed","Thur","Fri","Sat");
foreach($days as $k=>$v)
{
    echo $k . ' <input type="checkbox" name="labDays[]" value="'.$v.'" checked="checked">'; //you can give your styles and css ofcourse to make it better..
}

答案 2 :(得分:-1)

可能使用 echo 来打印值:

<input type="checkbox" name="labDays[]" value="<?php echo $days[$i]; ?>" checked="checked">