使用html和php的复选框数组


array of check boxes using html and php

我有一块代码,如下所示:

<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)

我相信这就是您想要的:

    <?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属性不需要任何值。它在那里就足够了

如果您想在数组中循环,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..
}

也许使用echo打印值:

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