PHP检查是否为空字段

时间:2012-01-29 22:47:57

标签: php field

我有一个大约10个字段的注册表单,并且在处理之前都需要填写它们,所以如果我想出这个检查,那么试图避免所有这些,这是一个好方法吗?

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

或者我应该if(空($ field_1)||空($ field_2)等..然后输出错误?

4 个答案:

答案 0 :(得分:3)

没关系。如果您只想显示消息“所有字段都是必填项”。没有显示哪个字段为空白。

否则,如果您检查并显示哪个字段为空,则会更加用户友好。

答案 1 :(得分:3)

假设您的数据来自$_GET$_POST,则所有数据字段都是字符串。这意味着您应该能够在single function call

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

这会查找完全等于空字符串的字符串。如果您想使比较松散(与empty()的检查大致相同),只需删除最终的TRUE

编辑考虑一下,你不需要严格的比较。我这样做是为了允许'0'的合法字段值(empty()不允许),但是由于'0' != '',因此也允许进行宽松的比较。

另一个编辑如果你想检查刺痛的长度是否大于2,你将不得不循环:

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)) {

答案 2 :(得分:3)

最好像你一样把它放到循环中,但是请注意,即使用户输入0并且将传递仅包含空格的字符串,这也会失败,因此您可能希望做出比{{更好的检查1}}

答案 3 :(得分: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.';
    }
}
?>