0

有人可以帮我检查我的代码,无论我点击什么值,收音机总是检查最后一个。它不能正确回发,但是返回的“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>
4

2 回答 2

3

您的比较基于 的返回值isset(),当他们应该测试 的值时$_POST['foo'],如下所示:

if(isset($_POST['foo']) && $_POST['foo'] == 'Orange'):

否则,true == 'Orange'实际上是真的,因为 PHP 是松散类型的并且在幕后进行类型强制,这就是为什么你会得到这个奇怪的结果。

于 2012-07-18T02:48:56.937 回答
1

这是你的问题:

if(isset($_POST['foo']) == 'Orange')

isset返回真或假,并且由于 PHP 的弱比较,true == 'Orange'. 你会想要这样做:

if(isset($_POST['foo']) && $_POST['foo'] == 'Orange')
于 2012-07-18T02:49:11.730 回答