使用php获取多个复选框名称/ id

Joh*_*ohn 7 php forms checkbox

如何使用PHP获取提交时多个选中复选框的名称或ID?以下是示例表单.谢谢.

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
   <input type="checkbox" name="orange" id="orange">
   <input type="checkbox" name="apple" id="apple">
   <input type="checkbox" name="sky" id="sky">
   <input type="checkbox" name="sea" id="sea">
   <br>
   <br>
   <input type="submit" name="Submit" value="Submit">
</form>
Run Code Online (Sandbox Code Playgroud)

Dav*_*ers 22

仅当选中该复选框时,才会从表单提交复选框值.更重要的是,它是名称属性,而不是ID.

在PHP中有几种处理复选框的方法:

  1. 为所有复选框指定相同的名称,后跟一对方括号,以便将整个集合视为数组.在这种情况下,请为每个复选框指定一个值.
  2. 为每个复选框指定一个不同的名称和值.
  3. 为每个复选框指定一个不同的名称,但没有值.

在每种情况下,您需要检查$ _POST数组中是否存在复选框名称.

例如:

<input type="checkbox" name="color[]" id="orange" value="orange">
<input type="checkbox" name="color[]" id="apple" value="apple">
Run Code Online (Sandbox Code Playgroud)

要获取这些复选框的值:

if (isset($_POST['color'])) {
    $colors = $_POST['color'];
    // $colors is an array of selected values
}
Run Code Online (Sandbox Code Playgroud)

但是,如果每个复选框都有不同的名称和显式值,如下所示:

<input type="checkbox" name="orange" id="orange" value="orange">
<input type="checkbox" name="apple" id="apple" value="apple">
Run Code Online (Sandbox Code Playgroud)

您仍然需要使用isset():

if (isset($_POST['orange'])) {
    // orange has been set and its value is "orange"
}
Run Code Online (Sandbox Code Playgroud)

如果未设置值,则默认值为"on",但除非已选中,否则它将不在$ _POST数组中,因此您仍需要使用isset().


Abd*_*aly 9

您需要为输入指定相同的名称:

<input type="checkbox" name="selection[]" value="orange">
<input type="checkbox" name="selection[]" value="apple">
<input type="checkbox" name="selection[]" value="sky">
<input type="checkbox" name="selection[]" value="sea">
Run Code Online (Sandbox Code Playgroud)

然后迭代PHP中的$ _POST ['selection']数组.