有人能帮我检查代码吗?无论我点击了什么值,收音机都会检查最后一个。它没有正确回发,但是返回的"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>
您的比较基于isset()
的返回值,而他们应该测试$_POST['foo']
的值,如下所示:
if(isset($_POST['foo']) && $_POST['foo'] == 'Orange'):
否则,true == 'Orange'
实际上是真的,因为PHP是松散类型的,并且在幕后进行类型强制,这就是为什么你会得到这个奇怪的结果。
这是您的问题:
if(isset($_POST['foo']) == 'Orange')
isset
返回true或false,并且由于PHP的弱比较,true == 'Orange'
。你会想这样做:
if(isset($_POST['foo']) && $_POST['foo'] == 'Orange')