2013-03-22 70 views
0

我有,你註冊你的狗的網頁,我想需要所有這些字段:輸入值0 =空?

$required_fields = array('name', 'age', 'gender', 'breed', 'size'); 
foreach ($_POST as $key => $value) { 
    if (empty($value) && in_array($key, $required_fields) === true) { 
     $errors[] = 'All fields marked with * are required.'; 
     break 1; 
    } 
} 

的問題是,如果有人進入0(這是我指導他們做的,如果狗是一個小狗),提交似乎讀取該字段爲空(給我這個錯誤)。我進一步檢查刪除任何沒有整數等,但最好的解決方案和最簡單的形式爲用戶,我仍然認爲他們能夠輸入0作爲一個值。無論如何,有什麼辦法可以讓我的PHP代碼讀取的值不爲空?

+0

你有沒有試過'NULL'測試? – 2013-03-22 13:27:15

回答

2

the manual

下面的事情被認爲是空的:

"" (an empty string) 
0 (0 as an integer) 
0.0 (0 as a float) 
"0" (0 as a string) 
NULL 
FALSE 
array() (an empty array) 
$var; (a variable declared, but without a value) 

你可以考慮修復是做somethng這樣的:

if ((empty($value) && $value != 0) && in_array($key, $required_fields) === true) { 
+0

是的,這是我所希望的不會是這樣的情況,但我想我必須接受它,因爲所有來源似乎都指出了這一點。謝謝你的回答,我想我可以通過不需要年齡來解決問題,如果它是空的,將它設置爲0(小狗)。 – HolyMackerel 2013-03-22 13:24:13

0

的PHP將它們視爲空:

null 
0 
"" 
"0" 
false 

所以,你有兩個選擇。附加一些東西給它,如價值a0或,使用isset

+0

它將始終在提交時設置,雖然,對吧? – HolyMackerel 2013-03-22 13:24:35

+0

是的...對,你需要在那裏糾正它。 – 2013-03-22 13:25:26

0

檢查$value === null

if ($value === null && in_array($key, $required_fields) === true) {