我有一個約10個字段的註冊表單,他們都需要在處理前填寫,所以儘量避免所有這些如果檢查我想出了這個,這是一個好方法嗎?PHP檢查是否爲空字段
foreach($list as $items) {
if(empty($items)) {
$error[] = "All fields are required.";
break;
}
}
,或者我應該做,如果(空($ field_1)||空($ field_2)等。然後輸出錯誤?
我有一個約10個字段的註冊表單,他們都需要在處理前填寫,所以儘量避免所有這些如果檢查我想出了這個,這是一個好方法嗎?PHP檢查是否爲空字段
foreach($list as $items) {
if(empty($items)) {
$error[] = "All fields are required.";
break;
}
}
,或者我應該做,如果(空($ field_1)||空($ field_2)等。然後輸出錯誤?
假設你的數據從$_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)) {
它的確定。如果你只是想顯示消息「所有字段是必需的。」沒有顯示出其在空白字段。
否則,如果您檢查,並顯示該字段爲空,將更加人性化。
這是好主意,把它變成循環像你一樣,但請注意,這將即使用戶輸入0
並且會傳遞僅包含空格的字符串,也可能會失敗,因此您可能希望做出比empty()
更好的檢查
我可以檢查strlen()是否至少2?還從那裏清除0? – Grigor 2012-01-29 23:04:40
你可以檢查你想要的全部,這取決於你有什麼樣的領域和他們想要的輸入。除了'strlen',你可能還需要'trim' – 2012-01-29 23:12:48
我會用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.';
}
}
?>
你應該注意'empty'也對'0'(一個只包含字符0的字符串)返回true。 – Arjan 2012-01-29 23:00:34