代码错误回发

时间:2012-07-18 02:46:47

标签: php

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

2 个答案:

答案 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')