我希望分别在“000000”这个以下数组的复选框中获得一个字符串。
已检查= 1,未选中= 0
离。 “010101”,“100001”
但 $ _ POST ['check'] 方法只获取已选中复选框值,因此我得不到我想要的确切所需的模式字符串
复选框的数量可能会有所不同。
请帮助我获得“000000”字符串的确切模式。
<body>
<form action="test.php" method="POST">
<input type="checkbox" name="check[]">
<input type="checkbox" name="check[]">
<input type="checkbox" name="check[]">
<input type="checkbox" name="check[]">
<input type="checkbox" name="check[]">
<input type="checkbox" name="check[]">
<input type="submit">
</form>
</body>
test.php的
<?php
$ary = $_POST['check'];
$str = '000000';
foreach ($ary as $key => $value)
{
$str[$key] = $value? 1 : 0 ;
}
echo $str;
答案 0 :(得分:1)
您可以为check
分配索引,并为每个复选框提供值:
<form action="test.php" method="POST">
<input type="checkbox" name="check[0]" value="1">
<input type="checkbox" name="check[1]" value="1">
<input type="checkbox" name="check[2]" value="1">
<input type="checkbox" name="check[3]" value="1">
<input type="checkbox" name="check[4]" value="1">
<input type="checkbox" name="check[5]" value="1">
<input type="submit">
</form>
所以,在test.php
:
$arr = str_split("000000");
echo join(array_replace($arr, $_POST['check']));
<强>解释强>
str_split
- 将0
替换为您在HTML复选框中提供的值array_replace
- 将数组加入字符串更新: 屏幕截图
答案 1 :(得分:0)
您可以使用常量来全局化最大数量的复选框$max = 6;
然后,使用显式ID
打印您的输入<form action="test.php" method="POST">
<? for($i = 0; $i < $max; $i++) { ?>
<input type="checkbox" name="check[<?=$i;?>]">
<? } ?>
<input type="submit">
</form>
然后检查是否缺少负值
$list = array();
for($i = 0; $i < $max; $i++) {
{
$list[] = array_key_exists($i, $_POST['check']) ? '1' : '0';
}
echo implode($list);
更新:使用Thamilan回答改善我的。
更新添加了另一种读取值的方法
$list = array_fill(0, $max, 0);
// $list = array_replace($list, $_POST['check']);
$list = $_POST['check'] + $list;
ksort($list);
echo implode($list);
更新这更清晰
<form action="test.php" method="POST">
<? for($i = 0; $i < $max; $i++) { ?>
<input type="hidden" name="check[<?=$i;?>]" value="0">
<input type="checkbox" name="check[<?=$i;?>]" value="1">
<? } ?>
<input type="submit">
</form>
这已经按预期进行了......
echo implode($_POST['check']);
答案 2 :(得分:0)
[添加此内容以回答this comment]
要做到没有索引编号,至少需要在值中指定索引:
<form action="test.php" method="POST">
<input type="checkbox" name="check[]" value="0">
<input type="checkbox" name="check[]" value="1">
<input type="checkbox" name="check[]" value="2">
<input type="checkbox" name="check[]" value="3">
<input type="checkbox" name="check[]" value="4">
<input type="checkbox" name="check[]" value="5">
<input type="submit">
</form>
所以你的test.php
可以是:
$arr = str_split("000000");
$postValues = array_fill_keys($_POST['check'], 1);
echo join(array_replace($arr, $postValues));
除了这个解释之外,你还可以添加array_fill_keys
来创建一个具有指定值的给定键的数组。因此,您的密钥将是您在HTML中检查的密钥,并且值已硬编码为1
。