2012-01-29 175 views
4

我有一個約10個字段的註冊表單,他們都需要在處理前填寫,所以儘量避免所有這些如果檢查我想出了這個,這是一個好方法嗎?PHP檢查是否爲空字段

foreach($list as $items) { 
    if(empty($items)) { 
     $error[] = "All fields are required."; 
     break; 
    } 
} 

,或者我應該做,如果(空($ field_1)||空($ field_2)等。然後輸出錯誤?

+0

你應該注意'empty'也對'0'(一個只包含字符0的字符串)返回true。 – Arjan 2012-01-29 23:00:34

回答

3

假設你的數據從$_GET$_POST,所有的數據來字段將是字符串,這意味着t帽子,你應該能夠做檢查的single function call

if (in_array('', $list, TRUE)) { 
    $error[] = "All fields are required."; 
} 

這看起來字符串這是正好等於一個空字符串。如果你想使比較寬鬆(或多或少與empty()所做的檢查完全相同),只需刪除最後的TRUE即可。

編輯想一想,你不需要嚴格的比較。我這樣做是爲了允許合法的字段值'0'(其中empty()不允許),但是這也將被允許與寬鬆的比較,因爲'0' != ''

ANOTHER編輯如果你想檢查刺的長度大於二,你將不得不循環:

foreach ($list as $item) { 
    if (strlen($item) < 2) { 
    $error[] = "All fields are required."; 
    break; 
    } 
} 

這也將「明確了0」假設這個你意思是「不允許值爲0」。如果你也想禁止'00'(或導致0任何其他字符串),你可以在if條款改成這樣:

if (strlen($item) < 2 || (!(int) $item)) { 
3

它的確定。如果你只是想顯示消息「所有字段是必需的。」沒有顯示出其在空白字段。

否則,如果您檢查,並顯示該字段爲空,將更加人性化。

3

這是好主意,把它變成循環像你一樣,但請注意,這將即使用戶輸入0並且會傳遞僅包含空格的字符串,也可能會失敗,因此您可能希望做出比empty()更好的檢查

+0

我可以檢查strlen()是否至少2?還從那裏清除0? – Grigor 2012-01-29 23:04:40

+0

你可以檢查你想要的全部,這取決於你有什麼樣的領域和他們想要的輸入。除了'strlen',你可能還需要'trim' – 2012-01-29 23:12:48

2

我會用in_array檢查來處理此問題。

<?php 
$fields=array('name','age','yadayada','something_else'); 

foreach ($_POST as $key=>$value){ 
    if(in_array($key,$fields) && $value!=''){ 
     $$key=$value; 
    }else{ 
     $error[$key]='This field is required.'; 
    } 
} 
?>