PHP理解用于提取复选框值的小代码片段

时间:2015-08-14 22:34:12

标签: php

我有一段PHP代码,它有效,但我很想知道原因。

Green: <input type="checkbox" name="color[]" value="green" />
Black: <input type="checkbox" name="color[]" value="black" />
White: <input type="checkbox" name="color[]" value="white" />
Blue:  <input type="checkbox" name="color[]" value="blue"  />
Red:   <input type="checkbox" name="color[]" value="red"   />

然后这就是我在下面的PHP代码中没有得到的,$ color是一个数组,我认为你必须至少有$ colors [] = $ _POST [&#39; color&#39 ;。]

if (isset($_POST['color'])) {
  $colors = $_POST['color'];
}
echo $colors[0];

感谢您帮助我更好地理解这一点。

2 个答案:

答案 0 :(得分:1)

您不需要在PHP中明确添加[]。请注意,您甚至不需要定义类型!这是PHP:)

$_POST['color']是一个数组,因此$colors也是!

阅读:http://www.html-form-guide.com/php-form/php-form-checkbox.html

修改

在PHP中,如果您编写$colors[] = $var,实际上是将$var添加到该数组的末尾。如果数组为空,$colors[0] == $var

$colors = $_POST['color']; // $colors receives the array
$colors[] = $_POST['color']; // $colors[0] receives the array, if $colors was empty

更多信息:http://php.net/manual/en/language.types.array.php#language.types.array.syntax.modifying

答案 1 :(得分:1)

在HTML中,名称中带有[]的每个元素都将被视为数组。

在以下情况下很有用:

nm /home/luca/.local/lib/libodbcinst.so | grep SQLGetPrivateProfilString

现在您将在php中将它们作为数组访问:

Choose your interests<br/>
<input type='checkbox' name='interests[]' value='Fashion'> Fashion
<input type='checkbox' name='interests[]' value='Cars'> Cars
<input type='checkbox' name='interests[]' value='Health'> Health
<input type='checkbox' name='interests[]' value='Programming'> Programming