2015-03-18 33 views
1

我正在使用PHP編寫REST接口來提交和查詢來自氣象站的數據。風速/溫度/等值通過POST請求作爲浮點(例如1.32)來發送,除非它們爲零,在這種情況下發送單個'0'數字。

我寫了下面的代碼來驗證輸入值:

if (is_numeric($params['wind'])) 
{ 
    if (!filter_var($params['wind'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION, $windLimit)) 
    { 
     throw new Exception('WIND (wind) WRONG VALUE TYPE [received '.$params['wind'].'].'); 
    } 
} 
else 
{ 
    throw new Exception('WIND (wind) WRONG TYPE [received '.$params['wind'].'].'); 
} 

這對於非零值效果很好,但究竟何時0 是否有filter_var使用特定的過濾器失效驗證( )當值可以是整數或浮點數?

回答

0

爲了允許零個值使用=== FALSE(即嚴格相等爲false):

if (filter_var(...) === FALSE) 
{ 
    throw new Exception('WIND (wind) WRONG VALUE TYPE [received '.$params['wind'].'].'); 
}