有人可以帮我检查我的代码,无论我点击什么价值,收音机总是检查最后一个。它没有正确回发,但返回“echo”值是正确的。
非常感谢
这是我的代码
<html>
<form id="form" name="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="radio" name="foo" value="Apple" checked="checked" <?php if(isset($_POST['foo']) == 'Apple'): echo "checked='checked'"; endif; ?>/>Apple
<input type="radio" name="foo" value="Banana" <?php if(isset($_POST['foo']) == 'Banana'): echo "checked='checked'"; endif; ?>/>Banana
<input type="radio" name="foo" value="Orange" <?php if(isset($_POST['foo']) == 'Orange'): echo "checked='checked'"; endif; ?>/>Orange
<input type="submit" value="Confirm" /> </form>
<? if(isset($_POST['foo']))
{echo $_POST['foo'];
}
?>
</html>
答案 0 :(得分:3)
您的比较基于isset()
的返回值,当他们应该测试$_POST['foo']
的值时,如下所示:
if(isset($_POST['foo']) && $_POST['foo'] == 'Orange'):
否则,true == 'Orange'
实际上是comes out true因为PHP是松散的类型,并且在幕后进行类型强制,这就是为什么你会得到这个奇怪的结果。
答案 1 :(得分:1)
这是你的问题:
if(isset($_POST['foo']) == 'Orange')
isset
返回true或false,并且由于PHP的弱比较,true == 'Orange'
。你会想要这样做:
if(isset($_POST['foo']) && $_POST['foo'] == 'Orange')