我正在尝试在提交后保留表单的复选框状态。这是复选框类型,您只能选中其中之一。我在这里看到一个问题,该问题涉及使用<?php if(isset($_GET['gender'])) echo "checked='checked'"; ?>
通过PHP通过PHP保留复选框的状态,但使用我的代码:
<form action="example.com/example" method="GET">
<input type="radio" value="male" name="gender" <?php if(isset($_GET['gender'])) echo "checked='checked'"; ?>>
<input type="radio" value="female" name="gender" <?php if(isset($_GET['gender'])) echo "checked='checked'"; ?>>
<input type="radio" value="other" name="gender" <?php if(isset($_GET['gender'])) echo "checked='checked'"; ?>>
<input type="submit" value="submit">
</form>
那行php无效,因为它们都会被检查。有没有一种方法可以保留复选框的状态而不必使用类似以下内容:
if(isset($_GET['gender']) && $_GET['gender'] == 'value')
因为我感觉可以用更好的方法来完成。
感谢您阅读我的问题。
答案 0 :(得分:1)
从本质上讲,您所描述的解决方案正是您所需要的。如果您要的话,可以将其缩短一点:
<?php
$gender = $_GET['gender'] ?? false;
function checked(){ echo 'checked'; }
?>
<form action="example.com/example" method="GET">
<input type="radio" value="male" name="gender" <?php if($gender == 'male') checked(); ?>>
<input type="radio" value="female" name="gender" <?php if($gender == 'female') checked(); ?>>
<input type="radio" value="other" name="gender" <?php if($gender == 'other') checked(); ?>>
<input type="submit" value="submit">
</form>
此处使用的??
运算符是null coalescence operator
,自PHP
版本以来已添加到7.0
中。如果未设置运算符的左部分,它的作用是返回操作符的右部分。
$gender = $_GET['gender'] ?? false;
具有与以下相同的结果:
if(isset($_GET['gender']))
$gender = $_GET['gender'];
else
$gender = false;
尽管您的代码或我上面建议的代码在功能上都没有问题,但通常将PHP
和HTML
混合在一起是不正确的做法。我建议您使用模板引擎-例如Smarty
。
答案 1 :(得分:0)
如果您只希望检查一个,那么您的代码将像这样。
def worker(aggregate, bit):
prefix, out = aggregate
key = prefix + bit
return ('', out + s[key]) if (key in s) else (key, out)
remainder,string = reduce(worker, '110011111000011010110011', ('', ''))
print string