检查哪个函数是真和假

Bol*_*lli 1 php csv validation

对于可怕的标题抱歉,让我试着解释一下.

我写了一堆小函数,它们返回true或false.

validateName()
validateEmail()
validateAddr()
validateBirtd()
validateUsername()
Run Code Online (Sandbox Code Playgroud)

现在我循环使用CSV文件导入的大量数据,并检查哪些数据有效(返回true或false).

我是这样做的:

if (validateName($data[0]) == true AND validateEmail($data[1]) == true AND validateAddr($data[3]) == true AND validateBirtd($data[5]) == true AND validateUsername($data[6])==true) {
 // create array to import etc etc
}else{
 // create other array with data who failed validation, to show user later..etc etc
}
Run Code Online (Sandbox Code Playgroud)

我的问题是 - 有更聪明的方法吗?是否可以为每个失败的验证创建一个列表?假设3个entrys使validateEmail()函数失败,而10都失败了validateEmail和validateName().

我是否有办法对此进行排序,以便告诉用户"这些托管失败的电子邮件验证"和"这些失败的名称和电子邮件验证".

我想过一次验证一个字段,但是如果一个条目有多个验证错误,我会有重复.

如果有某种逻辑我不知道我能做到这一点,那会很酷

xda*_*azz 5

你可以创建一个函数.

function validate($data) {
  $errors = array();
  $fields = array('Name', 'Email', 'Addr', 'Birtd', 'UserName');
  foreach ($fields as $i => $field) {
    $func = 'validate'.$field;
    if (!$func($data[$i])) {
      $errors[] = $field;
    }
  }
  return $errors;
}

$errors = validate($data);
if (empty($errors)) {
  // create array to import etc etc
} else {
  // errors
  echo 'There are errors with ' . implode(',', $errors);
}
Run Code Online (Sandbox Code Playgroud)