我使用PHP創建計算器,並想知道檢查$_POST
變量的最佳方法,我需要計算器來處理所有數字,包括0
。如果該字段爲空,則會失敗。在PHP中使用零(0)
聽起來很簡單,但is_null
,!empty
& isset
我似乎無法工作。
我使用PHP創建計算器,並想知道檢查$_POST
變量的最佳方法,我需要計算器來處理所有數字,包括0
。如果該字段爲空,則會失敗。在PHP中使用零(0)
聽起來很簡單,但is_null
,!empty
& isset
我似乎無法工作。
問題是,如果您在表單中使用文本輸入,它們將始終設置,並且isset()
將返回true
。它們已設置,但可能爲空,在這種情況下,empty()
會有意義,但對於0
,它將返回true
。 is_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()了更多的可能性。
請注意,'is_numeric'也匹配浮點數和字符串看起來像科學記數法,這可能會導致錯誤在你的代碼中,如果你期望整數。 –
是的,我希望計算器能處理'floats' ;-) – AbraCadaver
使用類型比較? 'if($ var === 0){/ *如果是數字0,則返回true * /}' – Qirel
另外,http://php.net/manual/en/function.is-numeric.php – AbraCadaver
對於初學者:'' $ valid = isset($ _ POST ['var'])&& is_numeric($ _ POST ['var'])' – SeinopSys