2017-01-23 33 views
0

我使用PHP創建計算器,並想知道檢查$_POST變量的最佳方法,我需要計算器來處理所有數字,包括0。如果該字段爲空,則會失敗。在PHP中使用零(0)

聽起來很簡單,但is_null,!empty & isset我似乎無法工作。

+1

使用類型比較? 'if($ var === 0){/ *如果是數字0,則返回true * /}' – Qirel

+3

另外,http://php.net/manual/en/function.is-numeric.php – AbraCadaver

+2

對於初學者:'' $ valid = isset($ _ POST ['var'])&& is_numeric($ _ POST ['var'])' – SeinopSys

回答

3

問題是,如果您在表單中使用文本輸入,它們將始終設置,並且isset()將返回true。它們已設置,但可能爲空,在這種情況下,empty()會有意義,但對於0,它將返回trueis_null()根本沒有意義。

if(!is_numeric($_POST['something'])) { 
    echo "Must be a number"; 
} 

如果您構建的輸入像數組:<input name="numbers[first]" ...>,那麼你可以很容易地將其過濾:

$numbers = array_filter($_POST['numbers'], 'is_numeric'); 

if(!isset($numbers['first'])) { 
    echo "Must be a number"; 
} 

您還可以檢查到filter_var()了更多的可能性。

+0

請注意,'is_numeric'也匹配浮點數和字符串看起來像科學記數法,這可能會導致錯誤在你的代碼中,如果你期望整數。 –

+0

是的,我希望計算器能處理'floats' ;-) – AbraCadaver