2012-01-29 159 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.'; 
    } 
} 
?>