PHP 数组:还为未选中的复选框创建一个键值对

PHP arrays: Also create a key-value pair for not-checked checkboxes

我有多组复选框,PHP 使用 $_POST 方法处理这些复选框,该方法为表单中的每个复选框组创建一个数组。现在我需要为每个复选框生成 0(未选中)或 1(选中)的数组值,但该数组目前只为选中的复选框生成键值对,忽略未选中的复选框。

假设我在一个组中有 10 个复选框,那么我的数组中还需要 10 个键值对,无论复选框是否被选中。目前,如果只选中 5 个复选框,我的数组会生成 5 个键值对,将处理值的其余 PHP 脚本的值从 1 移动到 10。

如何生成一个数组,该数组具有与复选框一样多的键值对,值“0”表示未选中,值“1”表示选中的复选框?

这是我的示例表单:

(注意 5 个选中的和 5 个未选中的输入)

<form action="processingFile.php" method="post">
  <input type="checkbox" name="filter[]" value="1" checked="checked">
  <input type="checkbox" name="filter[]" value="1" checked="checked">
  <input type="checkbox" name="filter[]" value="1">
  <input type="checkbox" name="filter[]" value="1">
  <input type="checkbox" name="filter[]" value="1">
  <input type="checkbox" name="filter[]" value="1" checked="checked">
  <input type="checkbox" name="filter[]" value="1" checked="checked">
  <input type="checkbox" name="filter[]" value="1" checked="checked">
  <input type="checkbox" name="filter[]" value="1">
  <input type="checkbox" name="filter[]" value="1">
</form>

当前生成此数组:

$array = array(
  [0] => "1",
  [1] => "1",
  [2] => "1",
  [3] => "1",
  [4] => "1"
);

但这是所需的数组:

$array = array(
  [0] => "1",
  [1] => "1",
  [2] => "0",
  [3] => "0",
  [4] => "0",
  [5] => "1",
  [6] => "1",
  [7] => "1",
  [8] => "0",
  [9] => "0"
);

我在 processingFile.php 中的当前脚本,因为我正在尝试弄清楚如何获取完整的键值对数组:

class Classname {

  public function methodName($array) {

    if (isset($array) && !empty($array)) {

      if (array_key_exists("0", $array)) {
        // Key 0 is present, do A...
      } else {
        // Key 0 is absent, don't do A...
      }

      if (array_key_exists("1", $array)) {
        // Key 1 is present, do B...
      } else {
        // Key 1 is absent, don't do B...
      }

      if (array_key_exists("2", $array)) {
        // Key 2 is present, do C...
      } else {
        // Key 2 is absent, don't do C...
      }

      // Different code for each key-value pair
      // Etc...

    } else {
      // Array is absent, do something else...
    }

  }

}

$newArray = new Classname;
$newArray->methodName($_POST);

您可以在复选框的名称中添加一个整数:

<form action="processingFile.php" method="post">
    <input type="checkbox" name="filter[0]" value="1" checked="checked">
    <input type="checkbox" name="filter[1]" value="1" checked="checked">
    <input type="checkbox" name="filter[2]" value="1">
    <input type="checkbox" name="filter[3]" value="1">
    <input type="checkbox" name="filter[4]" value="1">
    <input type="checkbox" name="filter[5]" value="1" checked="checked">
    <input type="checkbox" name="filter[6]" value="1" checked="checked">
    <input type="checkbox" name="filter[7]" value="1" checked="checked">
    <input type="checkbox" name="filter[8]" value="1">
    <input type="checkbox" name="filter[9]" value="1">
</form>

提交并使用 print_r($_POST['filter']) 将输出:

Array
(
    [0] => 1
    [1] => 1
    [5] => 1
    [6] => 1
    [7] => 1
)