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
)
我有多组复选框,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
)