2012-07-18 108 views
0

有人可以幫助我檢查我的代碼,無論我點擊了什麼值,無線電總是在最後一個檢查。它不正確回發,但返回「回聲」值是正確的。代碼錯誤發佈

非常感謝

這裏是我的代碼

<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> 

回答

3

你的比較是基於isset(),返回值時,他們應該測試的$_POST['foo']值,就像這樣:

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

否則,true == 'Orange'實際上comes out true,因爲PHP是鬆散類型,並在幕後進行類型強制這就是爲什麼你會得到這個奇怪的結果。

+0

謝謝你的及時答覆,我想我做了同樣的錯誤。現在我明白瞭如何解決這個問題:-)再次感謝 – olo 2012-07-18 02:56:45

+0

我知道這是有點偏離主題的@nickb,但是你可以給出一個很好的理由,爲什麼人們仍然會在PHP中使用'=='而不是'===' ?我只是沒有看到它的任何一點。 – 2012-07-18 16:23:17

1

這是你的問題:

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

isset返回true或false,並且由於PHP的弱對比,true == 'Orange'。你需要這樣做:

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

謝謝你的回答!我現在知道了:-) – olo 2012-07-18 02:55:33

+0

@pst如果你沒有isset,而PHP試圖引用一個不存在的數組的鍵,它會發出一個錯誤...不是嗎? – 2012-07-18 02:56:47