2012-03-07 60 views
1

我在使用PHP檢索單選按鈕的值時遇到了一個實際問題。 。 。我有兩個單選按鈕這樣:PHP不檢索無線電輸入值

<input name="admin" type="radio" value="1" />Yes 
<input name="admin" type="radio" value="0" checked />No 

和條件PHP語句檢查,看看是否PHP可以從中獲取任何數據:

if(!empty($_POST['admin'])) { 
    // do stuff 
} 
else { 
    echo "Value not set"; 
} 

問題是,PHP似乎可以返回一個值爲單選按鈕,如果選擇「是」,但不是如果選擇「否」,我試圖刪除「檢查」部分,無濟於事。無論我嘗試什麼,我都無法獲取「0」值。

我記得使用PHP數組來命名複選框,但是這對於單選按鈕肯定不需要,因爲只能在任何時候選擇它。

或者PHP只是有一個問題,返回值爲0的單選按鈕?

或者我在沒有意識到的情況下做了可怕的錯誤?

回答

5

PHP函數爲空將爲0,NULL,「」等返回false。

從php.net引用:

「」(空字符串)

0(0作爲整數)

0.0(0爲float)

「 0「(0作爲字符串)

NULL

FALSE

陣列()(空數組)

變量$變種; (一個聲明的變量,但在一個類中沒有值)

所有這些都會返回(false),因此會使您的if語句的執行無效。

您將不得不修改您的條件以反映取決於您希望完成的值的值。

祝你好運!

+0

所以會isset()函數在這種情況下,檢查 「0」 值的工作? – Sean 2012-03-07 11:37:04

+0

準確:)但你也必須檢查值是否爲0,即使值爲1或任何其他值,isset也可以工作。像Hendrik Richter所說的那樣使用雙重條件。乾杯! – optimum 2012-03-07 11:39:08

+1

再次感謝,總是驚歎於這裏的反應速度和質量! – Sean 2012-03-07 11:46:46

0

我相信零是你的問題。嘗試將它們設置爲「Y」和「N」,您應該看到N值經過。這是因爲0是PHP中的一個空值。

3

你的問題是empty()將0視爲空值,不管它是數字0還是字符串'0'。因此,而不是使用空()使用isset()和/或直接檢查,例如,

if (isset($_POST['admin'])) { 

if (isset($_POST['admin']) && $_POST['admin'] == 0) { 
+0

真棒:)謝謝! – Sean 2012-03-07 11:38:42