2012-10-24 24 views
5

可能重複:
php: ‘0’ as a string with empty()

我有像這樣一形式的輸入

<input name='var' type='number'> 

當提交表單時,通過POST將輸入發送到PHP文件。 在PHP文件時,它檢查以查看是否輸入是通過檢查

empty($_POST['var']) 

當我輸入填寫了「0」(零)到文本框中並提交表單,PHP代碼返回「1」的即使我已經嘗試了print_r($ _ POST)並且'var'顯然具有'0'的值,它仍然是空的($ _ POST ['var'])。

這是否應該發生?我是否也需要爲這個異常檢查== 0?謝謝。

+1

是的,[這是記錄](http://us2.php.net/manual/en/function.empty.php)。零是字符串,整型和浮點形式中的「空」值。 –

+2

如果您需要圍繞零個案進行編碼,請使用'if(empty($ _ POST ['var'])&&!is_numeric($ _ POST ['var']))' –

+0

感謝您的文檔鏈接,沒有看到該列表之前。 :) 有沒有辦法將您的評論標記爲答案? – AnsonL

回答

0

您不能僅使用empty來檢查它是否爲空字符串或字符串只包含空白字符。

使用這樣的:

function isEmpty($key) { 
    return isset($_POST[$key]) && trim($_POST[$key]) === ''; 
} 
+0

感謝您對空白處的建議,我已經在使用正則表達式進行驗證。 – AnsonL

3

要檢查該字段是否被填充或沒有,請使用isset($_POST['var'])代替empty($_POST['var'])

+0

雖然它有自己的警告。 'isset()'將返回一個空字符串的'TRUE',這對於'$ _POST'鍵來說可能不是預期的行爲。 –

0

如果被檢查的變量未定義,則爲0,空字符串'',false,空數組或空值,則empty()返回true。所以你看到的結果是100%正確的。

在0是合法值的情況下,使用is_set()。