您的问题很可能与 html 返回复选框值的方式有关。
如果一个复选框被签入,它的值被返回,如果它没有被签入,则不返回任何值。
在一种情况下,您将从称为name='colours[]'
您的值的复选框中选择颜色,如下所示:(第一行是选择,第二行是 php 中返回的数组)
[x] red [ ] green [ ] blue [x] yellow [ ] black [ ] white
array('red','yellow')
[ ] red [ ] green [ ] blue [x] yellow [ ] black [x] white
array('yellow','white')
[ ] red [ ] green [ ] blue [ ] yellow [ ] black [ ] white
null (no array returned)
一种方法是为每个选项使用不同的名称,并以这种样式检查您的值:
$red = isset($_POST['ck_red']);
$green = isset($_POST['ck_green']);
...
当然,如果您将红色复选框定义为name='ck_red'
等。
编辑
(您的代码如下)
html:
<INPUT TYPE="CHECKBOX" NAME="areas[]" VALUE="1">The Homeless</INPUT><BR />
<INPUT TYPE="CHECKBOX" NAME="areas[]" VALUE="2">The Elderly</INPUT><BR />
<INPUT TYPE="CHECKBOX" NAME="areas[]" VALUE="3">Refugees</INPUT><BR />
<INPUT TYPE="CHECKBOX" NAME="areas[]" VALUE="4">The handicapped</INPUT><BR />
php:
$areas[] = "$_POST[areas]";
foreach ($areas as $value) {
echo $value . " ";
}
答案:你有一个错误是在分配中$areas[] = "$_POST[areas]";
,即在使用"
周围$_POST[areas]
- 通过这样做你告诉解析器你想知道变量 $_POST[areas] 的文本值,它是一个数组和 php 的方式处理它是返回 TEXT 'array'而不是(例如在 javascript 中)由逗号分隔的元素列表。另一个错误是,尽管它可以按您的方式工作,但您引用的是未定义的常量areas
而不是字符串文字'areas'
($_POST['areas']
请注意键名周围的单引号'
。最后一个错误是分配$_POST['areas']
to$areas[]
而不是$areas
(没有[]
)。你在那里做的是你正在将数组的一个新元素添加到你要为其分配值的数组(区域),$_POST['areas']
以防万一它没有第一个错误("
)它会创建二维数组areas => array(array('a','b','c'))
修复(PHP):
$areas = $_POST['areas'];
foreach ($areas as $value) {
echo $value . " ";
}